历史上的今天
返回首页

历史上的今天

今天是: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

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

在这里插入图片描述

创建工程之后,只需要对工程进行修改即可,这里博主只是添加一个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

}

推荐阅读

史海拾趣

DESOUTTER公司的发展小趣事

Desoutter公司一直注重技术创新和产品升级。公司拥有一支专业的研发团队,不断投入资源进行新产品的研发和现有产品的改进。例如,公司成功开发了一系列新型气动螺丝起子、气动钻和气动冲击扳手等,这些产品不仅提高了工作效率,还降低了劳动强度。同时,Desoutter公司还利用先进的电脑辅助技术,实现了产品设计和生产的自动化,进一步提升了产品的质量和性能。

协顺电子(Finecables)公司的发展小趣事

在品质和创新的支撑下,协顺电子开始积极拓展市场。公司通过参加各类展会、举办技术交流会等方式加强与客户的沟通和交流,同时也不断完善自己的销售网络和售后服务体系。此外,协顺电子还注重品牌建设,通过广告宣传、公关活动等方式提升品牌知名度和美誉度。这些努力使得公司的市场份额不断扩大,品牌影响力也逐渐增强。

C.K Magma公司的发展小趣事

为了进一步提升技术水平和市场竞争力,C.K Magma公司积极寻求国际合作。他们与国外的知名科研机构和企业建立了战略合作关系,共同开展技术研发和市场拓展。这些合作不仅为公司带来了先进的技术和管理经验,还拓宽了公司的国际视野,为公司的长远发展奠定了坚实基础。

光大芯业公司的发展小趣事

面对全球经济的不确定性和市场竞争的加剧,光大芯业始终保持着清醒的头脑和坚定的信念。他们积极应对各种挑战,通过优化管理、提升效率、降低成本等措施,不断提高自身的竞争力。同时,公司还加大了对新技术、新产品的研发投入,以保持在市场上的领先地位。正是这种不断进取的精神和坚定的信念,让光大芯业在电子行业中不断发展壮大。

宁波晨翔电子(CONNFLY)公司的发展小趣事

宁波晨翔电子有限公司(CONNFLY)成立于1998年(前身宁波正青电子有限公司),初创时期主要致力于连接器及线材产品的研发与生产。在创始团队的共同努力下,公司逐渐在电子连接器市场找到了自己的定位,通过不断的技术创新和品质提升,逐渐获得了市场的认可。

Alpha-Micro Electronics公司的发展小趣事

随着技术的不断积累和创新,晨翔电子在智能仪表、LED照明、无线网络等领域取得了显著的技术突破。公司不仅成功研发出多款具有竞争力的产品,还积极拓展国内外市场,与多家知名企业建立了长期稳定的合作关系。这一时期的成功,为晨翔电子的后续发展奠定了坚实的基础。

问答坊 | AI 解惑

继电器的作用及固态继电器工作原理

本帖最后由 paulhyde 于 2014-9-15 09:06 编辑 继电器(relay)也是一种电门,但与一般开关不同,继电器并非以机械方式控制,而是一种以电磁力来控制切换方向的电门。当线圈通电后,会使中心的软铁核心产生磁性,将横向的摆臂吸下,而臂的右侧则迫使 ...…

查看全部问答>

基于CF接口技术的诱发电位测试系统的研究.pdf

基于CF接口技术的诱发电位测试系统的研究.pdf…

查看全部问答>

带键盘扫描接口的LED驱动控制芯片

求一款带键盘扫描接口的LED驱动控制芯片,最近找到一种叫NK1628的不到一块钱一个,但是封装只有SOP的,哪位大虾知道有DIP封装同等作用的芯片吗? …

查看全部问答>

移植串口16c554能够打开关闭但不能通讯

我现在吧D:\\WINCE500\\PUBLIC\\COMMON\\OAK\\DRIVERS\\SERIAL 目录下的驱动文件移植到了bsp下,我打开注册表发现在active能够发现我的那个串口,我用we-hjb的串口调试助手发现能够打开关闭串口,同时我打开串口的时候发现相应串口的中断BSPIntrEna ...…

查看全部问答>

WinCE开发新手入门提问

小弟最近要做一个的项目,开发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…

查看全部问答>

求助测频方法

欲设计一个 测量频率范围为0.1-10mHZ的频率, 精度0.1hz 信号:QCM传感器产生的信号 不知道用什么样的芯片能实现,msp430能行吗? 求教各位高手…

查看全部问答>

Linux面试题大全

Linux相关面试的集合,包罗万象,低分赠予。…

查看全部问答>

ADC12CTL0 |= ADC12SC.语句执行后,ADC12SC未置位

刚开始调ADC12模块就遇到一个很奇怪的问题,ADC12SC 在单通道单次转换模式下不能置位,但是在单通道多次转换模式下却可以置位。现在我换了两块不一样的最小系统板,都遇到这个问题。。 程序1.(TI的官方演示程序,单通道单次转换)----- ...…

查看全部问答>

Dxp的安装方法

详情请查阅http://wenku.baidu.com/view/5fe887addd3383c4bb4cd28b.html?from=related&hasrec=1…

查看全部问答>