历史上的今天
今天是:2025年02月28日(星期五)
2020年02月28日 | MSP430各模块及外设总结和初学那些坑
2020-02-28 来源:eefocus
集成开发环境/工具(IDE)
在官网看到有关的介绍和好友推荐的工具中,最有好感的是CCS(Code Composer Studio),虽然用MDK5也可以,但是有更方便的自然是要尝试一下……
相较于MDK5,CCS支持 TI 的微控制器和嵌入式处理器产品系列,含一整套用于开发和调试嵌入式应用的工具,用于优化的 C/C++ 编译器、源码编辑器、项目构建环境、调试器、描述器以及多种其他功能。
目前是不需要license的,也就是说不仅正版而且免费!虽然只免费90天,不过这已经足够了。
在下载的时候会提示你想要下载的资源,建议学什么下什么,不然占的内存有点多,比如我打算学习MSP430/432系列和Tiva-TM4,就只下载了这三类,但是这也占了1600M以上的空间。
这是官方最新版本的CCS下载链接TI Code Composer Studio 各版本的官网下载链接

创建第一个工程【LED灯】
下载CCS的时候习惯性的从网上搜各种430例程和讲解资料,然后发现——几乎没有什么有价值的东西(怪我太菜,搜不到),搜到的一些什么官方例程后来发现并没有什么用,因为——CCS上已经集成了
在记录这个之前强烈建议CCS首页的引导视频看一遍,那个几分钟的视频讲清楚了CCS最常用的用法和怎样利用CCS查找资源,英文好的可以看第一个视频(当然,视频下面可以设置中文字幕,听不懂看字幕也可),想看中文的可以看第二个视频。相较于第二个视频第一个视频的清晰度比较高,可以看到一些操作的准确位置
CCS选项卡的view——>Resource Explorer
在搜索框里选自己的芯片,比如我用的MSPF5529,我键入“5529”再在弹出的选项中点击我的Device即可

如下图,Device Documentation可以查看相关的资源文档,建议用Chrome打开(因为Chrome可以翻译成汉语),Software下面的5529有例程(Peripheral Examples),下面的两个子文件夹分别是寄存器和库函数版本的。下图中右面有个下载的标志(因为我已经下载了,所以出现Uninstall),点击可以下载,下载后该部分资源会在绿色的倒箭头,说明这是本地文件啦!

这里以第一个工程LED的点灯为例;打开第一个工程,右边下载标志旁边有个魔方标志,点击可以导入到IDE,注意在导入之前要对资源进行下载

如果出现该提示,说明你已经导入过一次了,可以在工作台找找你导入过的工程

创建工程之后,只需要对工程进行修改即可,这里博主只是添加一个LED而已;编辑完之后点击锤子(编译),然后Run->Load->【你的设备】就可以下载了,也可以选择绿色的甲壳虫(Debug)仿真。

串口传输
串口是个好东西,虽然在最初学习的时候我觉得LCD显示屏更好用。
这部分主要针对学习430的串口小白,因为博主搞了大半天搞到最后发现出错的地方都是菜鸟都不会犯的错误[手动羞愧] ……还是以寄存器版本为例
研究过程和出错现象
本文以第四个uart例程为例,参数如下:
波特率9600
UCA0的RXD【P3.4】和TXD【P3.3】
8数据位、1停止位
波特率的计算请到官网上找用户手册,博主看例程里有9600和115200(平时惯用的两个),所以没有细研究(其实就是懒)
接上了STlink并把STlink的RXD和P3.3连接,TXD和P3.4连接,并使其共地;
先锤子再运行
然后出错了……犯错过程如下:
1)接上STlink后运行过程弹出“No USB FET was found”,且LED101常亮,但是拔掉STlink之后重插一遍MSP430之后就不报错误了,于是本博主以为……这板子可以通过RS232->USB直接当串口用【现在想想觉得自己可能信得是玄学】
2)然后博主拔下STlink后成功将程序下载进去,打开串口调试助手一看,诶?怎么有两个COM口?本着试试哪个能收到数据哪个就是正确的心态【还是因为懒】选了COM12,发数据,没回应;再换COM11,回应是有了,只是,数据完全不对啊!
3)程序从头到脚看了N遍,的确是把收到的程序发回去,没错啊!网上搜各种错误信息,可是大多数出错都是因为自己编写的程序,而我烧录的是例程……然后找来找去发现,板子上的LED101红灯竟然是亮着的!这说明状态并不正常,经过故障排除得到了出错的所有原因
正确打开方式
首先,使用的STlink不要含有驱动,我是用的是主控芯片为STM32F103RBT6的STlink,因此只有一个端口,根本找不到MSP430的驱动,自然会报错
其次,板子不会凭空连接收发端,之前出现的两个COM其实如果我没有偷懒的话会发现COM11是Debug端口,COM12才是MSP UART1的串口端口,因此才会收到不正常的数据
换了一个普通的USB->TTL后连接后终于正常,如下图,然后在串口调试助手中选择COM5即可正常收发数据【注意:例程请用16进制显示】
另外为了方便,博主写了一个串口发送字符和字符串的例程,并控制LED1、LED2的亮灭指示,点此下载MSP430F55xx_串口发送字符或者字符串函数_控制LED指示【波特率9600】
ADC模数转换器
前言
*终于到ADC了……其实博主在写UART之前先写的ADC,但是本人有个强迫症……就是在用个什么东西的时候都想把他全部都用上……因此在写第一个程序的时候妄想把8个外部通道都打开,作为检测通道(当然未尝不可)
可坏就坏在F5529没有屏……只有2个LED呀!懒人本懒就把其他的通道中断配置成了仅LED1/LED2亮,全亮,全灭等等状态(现在想想真是懒到家了)
结果当然是没有结果……折腾了半天全是无用功,人在逻辑并不清晰的时候去做事情事倍功半,如果你逻辑很清晰用LED其实也是可以的……
不得已先写了UART的程序,用UART输出检测到的电压来检查问题。
这件事情告诉我们:偷懒也要有针对性,有的偷懒只会浪费时间。
要点
ADC_12配置有四个转换模式:
CONSEQx Mode
0 单通道单次转换
1 多通道单次转换
2 单通道连续转换
3 多通道连续转换
这里对单通道和多通道做一下配置对比以助理解:
单通道 多通道
PxSEL只配置需要的BIT PxSEL配置多个BIT
ADC12MSC为0 ADC12MSC置位
ADC12CONSEQ_0/DC12CONSEQ_2 ADC12CONSEQ_1/ADC12CONSEQ_3
– ADC12MCTLx配置通道,注意最后一个通道EOS置位
这里对单次转换和多次转换做一下配置对比以助理解:
单次转换 多次转换
ADC12CONSEQ_0/ADC12CONSEQ_1 ADC12CONSEQ_2/ADC12CONSEQ_3
ADC12SC每次中断都需要再次开启 ADC12SC初始化一次即可
可以在低功耗条件下运行 有那么一点点浪费时间(就是资源)
12位逐次比较,转化结果为0-4096,比较结果存储于ADC12MEMx
第一个例程是单通道检测,将转换数值发送到串口并配置了LED指示,写到多通道模式【多通道】手懒,没有加LED指示,有兴趣可以自己添加。
MSP430 ADC转换数值发送到串口【控制LED】
MSP430F55xx_ADC多通道多次转换串口发送数据
MSP430F55xxADC多通道单次转换串口发送数据
DMA
ADC检测之后往往用DMA传输,这样时钟和通道都做到独立于MCU之外了
ADC的定时/自动触发:适用于MSP430F5529的ADC12计时器触发源为TA0.1【P1.2】
六种传输模式:
DMADTx 传输模式
0 单次传输模式
1 块传输模式
2、3 突发块传输模式
4 重复单次传输模式
5 重复块传输模式
6、7 重复突发块传输模式
代码
/*DMA传输ADC采样值到串口发送*/
/*DMA配置*/
void DMASet(){
// Setup DMA0
DMACTL0 = DMA0TSEL_24; // ADC12IFGx triggered
DMACTL4 = DMARMWDIS; // Read-modify-write disable
DMA0CTL &= ~DMAIFG;
DMA0CTL = DMADT_4+DMAEN+DMADSTINCR_3+DMAIE; // Rpt single tranfer, inc dst, Int
DMA0SZ = 1; // DMA0 size = 1
__data20_write_long((uintptr_t) &DMA0SA,(uintptr_t) &ADC12MEM0);
// Source block address
__data20_write_long((uintptr_t) &DMA0DA,(uintptr_t) &UCA1TXBUF);
// Destination single address
}
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:06 编辑 继电器(relay)也是一种电门,但与一般开关不同,继电器并非以机械方式控制,而是一种以电磁力来控制切换方向的电门。当线圈通电后,会使中心的软铁核心产生磁性,将横向的摆臂吸下,而臂的右侧则迫使 ...… 查看全部问答> |
|
求一款带键盘扫描接口的LED驱动控制芯片,最近找到一种叫NK1628的不到一块钱一个,但是封装只有SOP的,哪位大虾知道有DIP封装同等作用的芯片吗? … 查看全部问答> |
|
我现在吧D:\\WINCE500\\PUBLIC\\COMMON\\OAK\\DRIVERS\\SERIAL 目录下的驱动文件移植到了bsp下,我打开注册表发现在active能够发现我的那个串口,我用we-hjb的串口调试助手发现能够打开关闭串口,同时我打开串口的时候发现相应串口的中断BSPIntrEna ...… 查看全部问答> |
|
小弟最近要做一个的项目,开发WinCE系统手机的应用程序。请问需要安装哪些工具?我装了EVC但每次运行就提示: Microsoft eMbedded Visual C++ has discovered no CE platform SDK installed on the desktop. Please install at least one CE pla ...… 查看全部问答> |
|
USB对单片机通过AD采样的数据干扰很大,噪声非常明显,如何减小噪声 连接USB转串口芯片后,USB对单片机通过AD采样的数据干扰很大,噪声非常明显,如何减小噪声 单片机为430F5418 AD为单片机内部AD USB芯片为FT232… 查看全部问答> |
|
ADC12CTL0 |= ADC12SC.语句执行后,ADC12SC未置位 刚开始调ADC12模块就遇到一个很奇怪的问题,ADC12SC 在单通道单次转换模式下不能置位,但是在单通道多次转换模式下却可以置位。现在我换了两块不一样的最小系统板,都遇到这个问题。。 程序1.(TI的官方演示程序,单通道单次转换)----- ...… 查看全部问答> |




