STM32驱动DA芯片DAC7617 - 图文

2020-05-09 14:32

单位:中南民族大学自动化 编辑:韦冬成

STM32驱动DAC7617

这是本人第一次根据时序图写程序,完成后的确是有点成就感的。所以记录下这次驱动的经历,聊以慰藉。

DAC7617是块四路串行输入 12位电压输出的数模转换器芯片,低功耗,单电源供电,使用很方便。从TI公司那里申请了两块,本来还申请其他型号的16位的,但是被拒绝了,只这两片成功了。

芯片到手后搜索了些资料,下载了芯片手册,对照着手册焊出了电路。手册上说供电用3V的,参考电压才1.25V。但是我系统板上的电源是5V或者3.3V的,而且1.25V的参考电压不容易得到。我手头上有3.3V和2.5V的AMS1117稳压芯片,于是我就用上这两块稳压芯片,把供电电压改成3.3V,参考电压改成2.5V。硬件原理图如图1:

图1

首先看看手册,了解一下芯片,都是英文的,大概看懂了一些,主要看

1

单位:中南民族大学自动化 编辑:韦冬成

引脚的功能,和时序的描述,然后把引脚都注释上中文,方便查阅。引脚功能如图2:

图2

接着就是看懂时序图开始写程序,时序图是这样叙述的:发送数据前,

LOADREG先从低电平置为高电平,然后CS从高电平变为低电平,开始传输数据,CLK先从高电平置为低电平,然后传输一位数据,CLK置高,上升沿让这位数据进位,然后再如此传输接下来的15位数据;传送完16位数据把CS置高电平,最后LOADREG置为低电平把数据锁存到DAC寄存器。如此便完成了一次DA传输。时序图如图3:

2

单位:中南民族大学自动化 编辑:韦冬成

图3

DAC16位寄存器的说明:第十五位和第十六位A1和A0为DAC通

道选择通道,共4个通道,十三位和十四为无效,第零位到第十二位为DAC值寄存器,值为0-4096;通道说明如图4:

图4

3

单位:中南民族大学自动化 编辑:韦冬成

程序源码:

/********************************************************************************* ** 文件名: mian.c ** 库函数版本 V3.5.0

** 工作环境: RealView MDK-ARM 4.20 ** 修改: 韦冬成 ** 生成日期: 2011-07-25 ** 功能: DAC7617E驱动测试 ** 说明: 3.3V供电,2.5V参考电压,0对应0V,2048对应1.25V,4095对应最大值2.50V ** 因此计算公式应为AD_Out = (2.50/4095)*N;

*********************************************************************************/ /* 包含头文件*******************************************************************/ #include \#include \

#include \

/* 类型声明 --------------——----------------------------------------------------*/ /* 宏定义 --------------——------------------------------------------------------*/ /* 变量 --------------——--------------------------------------------------------*/ /* 函数声明 -----------------------------------------------------------------*/ /* 函数功能 ------------------------------------------------------------------*/

/******************************************************************************* ** 函数名称: main

** 函数说明: 主函数 ** 输入参数: 无 ** 输出参数: 无 ** 返回参数: 无

*******************************************************************************/ int main(void) {

#ifdef DEBUG debug(); #endif SystemInit(); /* 系统初始化 */ DAC7617E_Configuration(); DAC7617E_Set_Value(0,2048); /* 通道A输出2048对应1.25V*/ DAC7617E_Set_Value(1,2048); /* 通道B输出4095对应1.25V*/ DAC7617E_Set_Value(2,4095); /* 通道C输出4095对应2.50V*/ DAC7617E_Set_Value(3,0); /* 通道D输出0对应0.00V*/ while(1) { }//while(1)结束

4

单位:中南民族大学自动化 编辑:韦冬成

}

#ifdef USE_FULL_ASSERT

/******************************************************************************* * 函数名称: assert_failed

* 函数说明: 报告在检查参数发生错误时的源文件名和错误行数 * 输入参数: file: 源文件名 line: 错误所在行数 * 输出参数: 无 * 返回参数: 无

*****************************************************************************/ void assert_failed(uint8_t* file, uint32_t line) {

/* 用户可以增加自己的代码用于报告错误的文件名和所在行数,

例如:printf(\错误参数值: 文件名 %s 在 %d行\\r\\n\

/* 无限循环 */ while (1) { } }

#endif

/***********************************文件结束***********************************/

/******************************************************************************* **文件名: DAC7617E.c **模块功能: DAC7617E模块 **修改: 韦冬成 **日期: 2011.07.26 **说明: 把LDAC直接接低电平可节省一个IO口,若不需把所有通道同时 ** 复位则可把RESET直接接高电平,再省一个IO,如此,操作该芯 ** 片只需4个IO. ** 本程序在3.3V供电,2.5V参考电压情况下测试,输出4095时对应最 ** 大电压为2.50V,中值(2048)对应1.25V.

*******************************************************************************/ #include \

/******************************************************************************* * Function Name : DAC7617E_Configuration

5


STM32驱动DA芯片DAC7617 - 图文.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南京邮电大学软件设计VHDL实验报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: