一、TLV65618芯片

TLV5618A 带掉电功能 2.7V-5.5V,低功耗双路 12 位数模转换器

特点 ●双路 12 位电压输出 DAC ●可编程调节转换时间 - 快速模式 3μs - 低速模式 10μs ●兼容 TMS320 和 SPI 串行接口 16位串行接口包含4位控制和12位数据。

二、驱动代码

采用模拟SPI方式实现对TLV5618的控制。

头文件:

/** FILE                : tlv5618.h* DESCRIPTION         : This file is for tlv5618.c* Author              : JackWang* --------------------*/
#ifndef __tlv5618_h__
#define __tlv5618_h__#define Channal_A  1
#define Channal_B  2
#define Channal_AB 3//-------------------------- Typedef----------------------------//
typedef struct {int (* initialize)(void);int (* Write_A_B)(unsigned short,unsigned short,unsigned char);
}TLV5618_T;//--------------------------- Extern ---------------------------//
extern TLV5618_T tlv5618;#endif //__tlv5618_h__

实现文件:

/** FILE                : tlv5618.c* DESCRIPTION         : This file is tlv5618 driver.* Author              : JackWang*/
//--------------------------- Include ---------------------------//
#include "tlv5618.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"//--------------------------- Define ---------------------------//
#define TLV5618_CS_H     GPIO_SetBits(GPIOH,GPIO_Pin_10)
#define TLV5618_CS_L     GPIO_ResetBits(GPIOH,GPIO_Pin_10)#define TLV5618_DIN_H  GPIO_SetBits(GPIOH,GPIO_Pin_8)
#define TLV5618_DIN_L    GPIO_ResetBits(GPIOH,GPIO_Pin_8)#define TLV5618_CLK_H   GPIO_SetBits(GPIOH,GPIO_Pin_11)
#define TLV5618_CLK_L    GPIO_ResetBits(GPIOH,GPIO_Pin_11)//--------------------- Function Prototype ----------------------//
static int initialize(void);
static int Write_A_B(unsigned short,unsigned short,unsigned char);
static int EX_DAC_Conver(unsigned short);//--------------------------- Variable --------------------------//
TLV5618_T tlv5618 = {.initialize = initialize,.Write_A_B=Write_A_B
};/*!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!*/
static int
initialize(void)
{GPIO_InitTypeDef   GPIO_uInitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH,ENABLE);GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_11;    GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_OUT;                        GPIO_uInitStructure.GPIO_OType = GPIO_OType_PP;                    GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_UP;                         GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_50MHz;                  GPIO_Init(GPIOH,&GPIO_uInitStructure);TLV5618_CS_H ;TLV5618_CLK_L ;TLV5618_DIN_L ;return 0;
}/*!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!*/
static int
EX_DAC_Conver(unsigned short Dignum)
{unsigned short Dig = 0;TLV5618_CS_L;  TLV5618_CLK_H;for (int idx = 0; idx < 16; ++idx) {Dig=Dignum&0x8000;if (Dig) { TLV5618_DIN_H; }else     { TLV5618_DIN_L; }for (int delayTime = 0; delayTime < 100; ++delayTime );//for delay onlyTLV5618_CLK_L;Dignum<<=1;for (int delayTime = 0; delayTime < 100; ++delayTime );//for delay onlyTLV5618_CLK_H;}TLV5618_CLK_L;TLV5618_CS_H;   for (int delayTime = 0; delayTime < 1000; ++delayTime );//for delay onlyreturn 0;
}
/*!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!*/
static int
Write_A_B(unsigned short Data_A, unsigned short Data_B, unsigned char Channal)
{unsigned short Temp=0x4000;switch(Channal){case Channal_A:        EX_DAC_Conver(Temp|0x8000|(0x0fff&Data_A));break;case Channal_B:        EX_DAC_Conver(Temp|0x0000|(0x0fff&Data_B));break;case Channal_AB:   EX_DAC_Conver(Temp|0x1000|(0x0fff&Data_B));EX_DAC_Conver(Temp|0x8000|(0x0fff&Data_A));break;default:break;}return 0;
}

TLV5618 双路12位DAC 模拟SPI驱动相关推荐

  1. MAX535 单路13位DAC 模拟SPI驱动

    一.MAX535 max535是低功耗.13位.电压输出DAC,采用串行接口和µMAX封装.MAX535通过单个+5V/3.3V电源工作,仅需要280µA电流工作. MAX535/MAX5351适用于 ...

  2. STM32管脚模拟协议驱动双路16位DAC芯片TM8211

    STM32管脚模拟协议驱动双路16位DAC芯片TM8211 TM8211是一款国产的低成本双路16位DAC驱动芯片,可以应用于普通数模转换领域及音频转换领域等.这里介绍STM32 HAL库驱动TM82 ...

  3. STM32模拟SPI时序控制双路16位数模转换(16bit DAC)芯片DAC8552电压输出

    STM32模拟SPI时序控制双路16位数模转换(16bit DAC)芯片DAC8552电压输出 STM32部分芯片具有12位DAC输出能力,要实现16位及以上DAC输出需要外挂DAC转换ASIC. D ...

  4. PCA9685 16路12位pwm信号发生器

    PCA9685 16路12位pwm信号发生器 一.概述和硬件 1.概述 2.硬件 1.电压 2.i2c地址 3.使能脚 二.寄存器功能 MODE1寄存器 各个通道的ON和OFF寄存器 PRE_SCAL ...

  5. 鸿蒙开发板Hi3861模拟SPI驱动JLX12864_LCD(UC1701X)_基于code-2.0

    鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码-C文档类资源-CSDN下载鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码博文介绍https://t更多下载资 ...

  6. 鸿蒙开发板Hi3861模拟SPI驱动12864LCD_ST7920_基于code-2.0-CANARY

    鸿蒙开发板Hi3861模拟SPI驱动12864LCD_ST7920源码.rar-C文档类资源-CSDN下载鸿蒙开发板Hi3861模拟SPI驱动12864LCD_ST7920源码.rar博文链接:htt ...

  7. 外设驱动库开发笔记43:GPIO模拟SPI驱动

      SPI总线是我们常用的串行设备接口,一般情况下我们都会适应硬件SPI接口,但有些时候当硬件端口不足时,我们也希望可以使用软件来模拟SPI硬件接口,特别是要求不是很高的时候.在这一篇中我们将来讨论如 ...

  8. MSP430杂谈--AD7793硬件SPI驱动与模拟SPI驱动

    最近项目中用到了AD7793读取铂电阻值来得到相应的温度,编写了基于MSP430的硬件驱动程序和模拟驱动程序,并且能成功运行,现在记录一下分享给大家. AD7793硬件IIC驱动完整版下载链接:htt ...

  9. 【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341

    [全志T113-S3_100ask]15-2 linux系统gpio模拟spi驱动屏幕--ILI9341 背景 (一)查阅参考文档 (二)使能内核模块 (三)修改设备树 (四)测试 (五)后语 背景 ...

最新文章

  1. 2022-2028年中国PPS树脂产业研究及前瞻分析报告
  2. 如何仅使用HTML和JavaScript构建简单的URL缩短器
  3. 主键id 请求参数用什么类型_中小型项目用SpringBoot太大了,不如尝试下Martian
  4. 【小白学习C++ 教程】十一、C++类中访问修饰符
  5. day02:requests爬取豆瓣电影信息
  6. 今天拿到了同事给我买的《java与模式》
  7. java instanceof翻译_Java 中的instanceof简单讲解
  8. Observer的实现
  9. 用c语言写代码_教你如何用android mvp分层架构优雅写代码
  10. pandas读取Excel文件
  11. 通用浏览器插件技术概况与分析
  12. 夏普扫描显示没有所选服务器,夏普扫描绑定服务器地址
  13. STM32H7B0 HAL库中关于DMA的注意事项以及DCMI调试遇到的问题及解决方法
  14. do还是doing imagine加to_do还是doing imagine加to_do、to do、doing用法全汇总,再也不用担心选错啦(收藏)......
  15. C# 大地测量高斯投影正反算公式计算程序
  16. chai.js------使用
  17. 学习WordPress必须知道的函数(转)
  18. 工作9年程序员面试华为要薪1万,华为员工:公司没这么低工资的岗.
  19. MySQL字段类型说明
  20. Elasticsearch:Data streams(三)

热门文章

  1. 如何获取元素在父级div里的位置_关于元素的浮动你了解多少
  2. click js自动点击 vue_vue.js2.0点击获取自己的属性和jquery方法
  3. element手机验证格式_vue封装 element-ui form表单验证 正则匹配手机号 自定义校验表格内容...
  4. ubuntu+查看服务器文件夹权限,Ubuntu - 文件夹权限查看与修改
  5. Wordpress基础:精简头部wp_head
  6. Linux C 数据结构---单向链表
  7. Fedora 19 Mate环境安装Gnome3
  8. [Linux] VIM 代码折叠
  9. 关于局部变量在内存中的地址
  10. NFS调试linux内核启动卡死在DHCP和RARP上