记一次DAC转换功能修改的解决
最近的项目捣鼓msp430需要用到dac转换以输出模拟信号,项目代码是接手前同事的 有些地方调试不通,以前没有接触过msp430芯片,更是没搞过这种芯片io口时序驱动层的东西,甚至纯c的都是头一次作为工作正式用。没办法 万事开头难嘛 ,硬着头皮网上到处翻资料 找芯片的手册 找dac外设的寄存器说明,功夫不负有心人 最终还是被我解决了。
记录一下解决的过程
首先对以前的代码浏览了一遍,以及对网上到处抄过去抄过来的文章有了个初步的大概套路了解。首先这是一个12位的dac外设 ,先对他进行初始化就是 设置参考电压源 设置各个寄存器 打开外设,然后12位嘛 自然是0x00~0xfff输出对应电压。就像下面这样,事先我已经确保了硬件连线是正确的,知道了DAC12_0CTL是寄存器控制位,知道了DAC12ENC是使外设工作,DAC12_0DAT是输出模拟量。
1 //不能使用内部参考电压 会影响到温度传感器
2 //ADC12CTL0 = REFON + REF2_5V; // 参考电压为内部2.5v
3 DAC12_0CTL = DAC12AMP_5 + DAC12IR + DAC12LSEL_0;//控制寄存器设置,自动更新数据,内基准为满量程
4 DAC12_0CTL |= DAC12SREF_2;//使用外部参考电压 外部的为3.3v
5 DAC12_0CTL |= DAC12ENC; // 启动DAC模块(DAC12LSEL_0时此句可以省,这里设置为1)
6 DAC12_0DAT = 0x0000; //DAC初值为0,更新这个寄存器就可以更改DAC输出数据
好我们继续往下工作,然后在网上翻到了一篇芯片的中文手册 https://www.docin.com/p-301491113.html 找到了第119页关于DAC外设描述的位置,主要就是这幅图。

学单片机入门的时候这种框图也见识过 知道是单片机内部机制的描述 跟内部机制是对应的,自己凭这种图真正解决问题的话是头一遭。进而我观察到了自己代码跟图上有联系关系,怎么个联系法呢 ,那就是DAC12SREFX吸引了我的关注,因为代码里跟图上单词是相似的,原来代码里写的是DAC12SREF_0 ,进而我跟踪到了他的定义。
1 #define DAC12SREF_0 (0*0x2000u) /* DAC12 reference 0: Vref+ */
2 #define DAC12SREF_1 (1*0x2000u) /* DAC12 reference 1: Vref+ */
3 #define DAC12SREF_2 (2*0x2000u) /* DAC12 reference 2: Veref+ */
4 #define DAC12SREF_3 (3*0x2000u) /* DAC12 reference 3: Veref+ */
通过后面的注释以及其它网站的说明了解到Vref+是内部参考电压源 Veref+是外部参考电压源,再进而发现下面还有一个寄存器描述表,我知道事情有眉目了。

通过对照硬件原理图我已经事先知道了确实是使用的0号通道,也就是DAC12_0CTL,再结合上面的框图知道了第01是vref 通过框图看到也是对应的节点也是连在一起的。23是veref,我们是使用外部电压参考源那么使用2。对照框图和寄存器说明 以及注释 觉得直接使用
1 #define DAC12SREF_2 (2*0x2000u) /* DAC12 reference 2: Veref+ */


2*0x2000u对照上面的寄存器说明可以看到第14 和13 位是二进制的10 ,也正好契合到框图的DAC12SREFX处梯形的第三个。说明根据以前经验的推测都是正确的。由于我用的IAR工具里没法调试,于是把初始化的几个宏定义玲出来在vc++里查看了最终组合出的字节值,以及把对应的二进制位对照寄存器说明进行了一个确认。然后DAC12_0DAT进行输出 ,测试一下,大功告成,一切正常。
经过这一过程,感觉人真是神奇 对吧, 通过对现象规律关联思索 对现象的预测 建立假想模型 ,主观能动性加上摸索学习能力,竟然也可以解决未知的问题。
记一次DAC转换功能修改的解决的更多相关文章
- 实现十进制无符号整数m到十六进制数的转换功能
/*利用顺序栈结构,编写算法函数void Dto16(unsigned int m)实现十进制无符号整数m到十六进制数的转换功能.*//******************************** ...
- maximo功能修改(初步理解)
已接触IBM公司的MAXIMO近三个月,在这时间里自己对maximo也有所了解,今天将自己总结写在这里,方便自己的温习和大家的参考,不足之处还望指出,我一定在第一时间内修改. 今天在公司所做的就是完善 ...
- java11-5 String类的转换功能
String的转换功能: byte[] getBytes():把字符串转换为字节数组. char[] toCharArray():把字符串转换为字符数组. static String valueOf( ...
- Java基础知识强化34:String类之String类的转换功能
1. String类的转换功能 String[] split(String regex)//将字符串变成字符串数组(字符串切割) byte[] getBytes()//将字符串变成字节数组 char[ ...
- javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- C++ operator重载运算符和隐式转换功能的实现
C++ operator重载运算符和隐式转换功能的实现: #include <iostream> using namespace std; class OperatorTest { pub ...
- github 换行符自动转换功能
最近想把自己的一个Qt工程同步到github上,但是当自己把代码从仓库中签出来的时候编译的时候总是出现一些很奇葩的错误,一开始以为是源文件编码的问题,改了编码以后问题还是没有解决,我比较了一下两个工程 ...
- String的用法——转换功能
package cn.itcast_05; /* String类的转换功能: byte[] getByte():把字符串转换成字节数组 复习: public String(byte[] bytes): ...
- String类的转换功能
/* * String类的转换功能 * char[] toCharArray():把字符串转换为字符数组 * String toLowerCase():把字符串转换为小写字符串 * String to ...
- ABBYY FineReader 15新增智能PDF文档转换功能
ABBYY FineReader 15(Windows系统)新增智能PDF文档转换功能,可自动检测导入PDF数字文档的文本层质量,确保转变为可编辑格式后的准确结果:从表单字段和文本框中提取文本,准确保 ...
随机推荐
- NOIP2023模拟2联测23 T2 害怕
NOIP2023模拟2联测23 T2 害怕 好像写了一种出题人意料之外的算法. 思路 在生成树上加入白边,白边和若干条蓝色边形成环,环上的蓝色边必须要分配比该白色边更小的边权(最小生成树). 给每一条 ...
- NZOJ 模拟赛4
T1 数字游戏 大家列队后,都觉得累了,于是一起坐到院子中的草地上休息.这时Anna突然想跟她的最大竞争对手Cici玩一个数字游戏,她要你编写程序帮助她取得胜利. 第i次游戏初始时有一个整数N_i(1 ...
- 嵌入式Linux系统构建
参考资料 本篇内容主要参考 韦东山的<嵌入式Linux应用开发完全手册V5.2_IMX6ULL_Pro开发板.pdf> 具体课程见 百问网嵌入式专家-韦东山嵌入式专注于嵌入式课程及硬件研发 ...
- think in java interview-高级开发人员面试宝典(二)
从现在开始,以样题的方式一一列出各种面试题以及点评,考虑到我在前文中说的,对于一些大型的外资型公司,你将会面临全程英语面试,因此我在文章中也会出现许多全英语样题. 这些题目来自于各个真实的公司,公司名 ...
- Tornado框架之深入(二)
知识点 Application设置 debug模式 路由设置扩展 RequestHandler的使用 输入方法 输出方法 可重写接口 目录: Application settings 路由映射 输入 ...
- 从零开始的Python世界生活——基础篇(Python字典)
从零开始的Python世界生活--基础篇(Python字典) 1.Python字典是什么? Python字典是python中非常重要的非常灵活和强大的内置数据结构,用于存储键值对(key-valu ...
- 通过su - userName 切换用户,无法通过userdel -r 删除用户?
需要通过exit退出用户,su只是进行了切换,并没有关闭
- regsvr32.exe使用
regsvr32.exe使用详解: regsvr32.exe是32位系统下使用的DLL注册和反注册工具,使用它必须通过命令行的方式使用,格式是: regsvr32 [/u] [/s] [/n] [ ...
- 树莓派4B 微雪7寸触摸屏 双屏 触摸屏校正
树莓派4B+微雪7寸触摸屏+PC显示器,以触摸屏位主显示,PC显示器扩展,这时会有触摸不准的情况. 通过观察可以发现触摸被放大到了整个屏幕,即触摸屏+PC显示器. 1. 通过查看2个屏幕分辨率和位置, ...
- vue3版本下element-plus和antd-vue选哪个更好一些?
Vue 3 发布后,各家第三方库开始陆续重构并支持 Vue 3 ,国内两大知名框架 Element Plus 和 Ant Design Vue 也相续发布新版支持 Vue 3.到底应该怎么选择呢? E ...