历史上的今天
返回首页

历史上的今天

今天是:2025年06月07日(星期六)

2020年06月07日 | TinyOS在MSP430F2618上移植(二)之USCI

2020-06-07 来源:eefocus

第一篇文章《TinyOS在MSP430F2618上移植(一)》早在5月份就已写好,间隔了2个月才有时间写这篇文章,期间一直忙于SPI、UART接口的测试以及FLASH、LCD的移植。本文主要叙述MSP430F2618单片机USCI的移植。


对比MSP430F1611与MAP430F2618,可以看出两者最大的不同点在于后者提供了更丰富的外围接口,分为A,B两组,其中A组的功能有UART、IrDA ,B组提供SPI、I2C功能,另外A组也可以配合B组中提供的SCK作为SPI接口。在A,B组中又分为两个独立组,A0/1,B0/1。


2618中特殊功能寄存器也做了改动,去除了模块使能寄存器1、2(module enable register 1 and 2)ME1以及ME2,特殊功能器IE2,IFG2中仅包含A0和B0相应的接收/发送中断使能以及中断状态位,而A1和B1相应的中断使能以及中断状态则有寄存器UC1IE和UC1IFG相应位实现。所以,首先得修改McuSleepC.nc中出现的ME1,ME2,在getPowerState()中使用UCB0/1CTL1 和UCA0/1CTL1替代,即当USCI使用时钟源为UCSSEL_1(ACLK)时,返回当前的电源状态为LPM1。


修改HplMsp430GeneralIOC.nc中引脚配置,去除所有宏定义(否则编译时出现引脚未定义错误),重新配置接口(主要是USCI接口)。


修改msp430usart.h。根据2618中相应寄存器修改数据结构,定义数据类型msp430_ucactl0_t,msp430_ucactl1_t(Async_mode)和msp430_ucbctl0_t, msp430_ucbctl1_t (Sync_mode),并增加相应的DEFINE_UNION_CAST宏,实现定义的结构体类型与整型之间相互转换。定义用于SPI接口配置的数据类型msp430_spi_config_t,其中包括16bit的波特率UBR,8bit的UCTL0以及8bit的UCTL1寄存器相应位的定义。定义用于UART接口配置的数据类型msp430_uart_config_t,其中包括16bit的波特率UBR,8bit的UMCTL ,8bit的UCTL0以及8bit的UCTL1寄存器相应位的定义。


回到usart目录下,由于低版本MSP430系列仅采用两个分组1,2,而2618中使用了A,B分组,而每一个组中又包括两个分组1,2。分别增加HplMsp430UsartA0C.nc,HplMsp430UsartA0P.nc,HplMsp430UsartA1C.nc,HplMsp430UsartA1P.nc,HplMsp430UsartB0C.nc,HplMsp430UsartB0P.nc,HplMsp430UsartB1C.nc,HplMsp430UsartB1P.nc。上述文件使用的接口HplMsp430GeneralIO分别连接到不同的接口上实现不同的功能。在文件msp430regtypes.h中增加相应数据类型的定义,即定义寄存器的数据类型,然后在上述P文件中使用MSP430REG_NORACE。


由于A和B两组共用同一类中断,如A0/B0使用USCIAB0RX_VECTOR接收中断向量,那么在TOSH_SIGNAL(USCIAB0RX_VECTOR)中应判断触发此中断的是哪一组,在中断中通过判断此时中断标志位和中断使能位指向哪一组,当这两个条件都成立时,读相应的数据寄存器,并触发Interrupts接口的rxDone。删除与ME1/2相关的语句,修改相应的寄存器选项。

实现SPI功能。增加Msp430SpiA0C.nc,Msp430SpiA1C.nc,Msp430SpiB0C.nc,Msp430SpiB1C.nc这4个文件供外部接口使用SPI功能时连接使用。在使用SPI功能时可以使用DMA模式,增加Msp430SpiDmaA0/1P.nc,Msp430SpiDmaB0/1P.nc,Msp430SpiNoDmaA0/1P.nc,Msp430SpiNoDmaB0/1P.nc共8个文件,实现上述4个C文件向上层连接,最终由Msp430SpiDmaP.nc,Msp430SpiNoDmaP.nc两个文件实现接口提供的功能。而向下层连接是通过增加Msp430UsartB0C.nc,Msp430UsartB1C.nc,这两个文件连接Hpl层,并且连接到资源仲裁层,通过增加Msp430UsartShareB0P.nc,Msp430UsartShareB1P.nc实现。


与实现SPI功能相似,UART功能由下述方法实现。增加Msp430Uart0/1C.nc, Msp430Uart0/1P.nc,其中Msp430Uart0/1C.nc用于外部接口使用UART功能时连接。向上层连接通过Msp430Uart0/1P.nc连接到Msp430UartP.nc,该文件实现UART接口的功能。而向下层连接是通过增加Msp430UsartA0C.nc,Msp430UsartA1C.nc,这两个文件连接Hpl层,并且连接到资源仲裁层,通过增加Msp430UsartShareA0P.nc,Msp430UsartShareA1P.nc实现。


通过上述配置即可完成USCI的移植,通过编译过程中出现的错误再做相应的修改。


使用SPI时通过连接模块Msp430SpiA0C.nc,Msp430SpiA1C.nc,Msp430SpiB0C.nc,Msp430SpiB1C.nc,选择其中的一组,最后提供一个组件使得上述4个文件中的Msp430SpiConfigure接口连接到此组件,实现配置SPI功能。


使用UART时通过连接模块Msp430Uart0C.nc, Msp430Uart1C.nc,选择其中的一组,最后提供一个组件使得上述2个文件中的Msp430UartConfigure接口连接到此组件,实现配置UART功能。


最后,TinyOS2.1.1默认的时钟源选择的是DCO默认设置,其频率在1.1MHZ左右。在MoteClockC文件中取消对MoteClockP。Msp430ClockInit -> Msp430ClockC语句的注释,意义在于使用本平台下的时钟初始化函数。修改MoteClockP文件中setupDcoCalibrate函数,开启XT2时钟源,并将MCLK和SMCLK都设置为以XT2为时钟源。并根据需要修改initClock函数,可以直接注释掉前两句。


修改后的msp430请搜索资源 TinyOS MSP430F2618移植。

推荐阅读

史海拾趣

Fair Rite公司的发展小趣事

随着电子行业的快速发展,Fair Rite迅速捕捉到新的市场机遇。公司不断推出创新产品,以满足医疗、照明、汽车、通讯、航空、国防、智能能源和工业市场等领域的需求。Fair Rite通过技术创新和品质保证,赢得了客户的信赖和市场的认可。

GE Solid State公司的发展小趣事
在嘈杂的环境中,声音信号可能受到干扰,影响用户的判断。
台湾稳态公司的发展小趣事

随着企业实力的增强和产品质量的提升,台湾稳态公司开始积极拓展市场。公司不仅在国内市场取得了良好的销售业绩,还积极开拓海外市场,将产品销往全球多个国家和地区。同时,稳态公司还制定了全球化战略,通过与国际知名企业的合作和交流,不断提升自身的国际竞争力。

上海双岭电子(Double-peak)公司的发展小趣事

上海双岭电子自成立以来,一直致力于场效应半导体器件的研发和生产。在成立初期,公司面临着技术瓶颈和市场竞争的双重压力。然而,双岭电子的创始人团队凭借对技术的执着追求和对市场的敏锐洞察,成功研发出具有自主知识产权的结型场效应晶体管,并迅速在航空、通讯等领域打开了市场。这一创新不仅为公司带来了丰厚的利润,也奠定了双岭电子在电子行业中的领先地位。

AW Industries Inc公司的发展小趣事

除了追求经济效益外,AW Industries Inc还注重履行社会责任。公司积极参与环保事业,通过采用环保材料、减少废弃物排放等方式降低生产对环境的影响。同时,公司还关注员工福利和社会公益事业,通过捐款、资助等方式回馈社会。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。


请注意,这些故事是基于电子行业的一般情况虚构的,并不代表任何真实事件或公司。如果您需要关于特定公司的真实发展故事,建议您查阅相关资料或访问公司官网以获取更准确的信息。

Electech Electronics公司的发展小趣事

Electech Electronics一直非常重视产品质量和品质管理。公司建立了严格的质量管理体系,从原材料采购到产品生产、检测和包装等各个环节都进行严格把控。此外,公司还不断引进先进的生产设备和技术,提升产品的制造精度和品质。这些举措使得Electech Electronics的产品在市场上享有很高的声誉,赢得了客户的信赖。

问答坊 | AI 解惑

汽车ECU测试系统介绍

ECU的历史 发动机电子控制装置,也称作发动机控制器(ECU),于20世纪70年代诞生。当时,由于石油危机,人们正在寻找一种提高燃油经济性的方法,他们想要找出一种能够使发动机在更为清洁和污染更少的条件下运行的方法。当时的工程师运用一种叫做燃 ...…

查看全部问答>

低压大电流开关电源的设计

1 引言       为了以更低的功耗获得更高的速度和更佳的性能,要求电源电压越来越低,瞬态性能指标越来越高,因此对开关电源提出了越来越高的要求。用原有的电路拓扑及整流方式已不能满足现在的要求,为了适应IC芯片发展的需要,人们开始研 ...…

查看全部问答>

如何做好医疗电子版块?欢迎大家多提意见

如何做好医疗电子版块?欢迎大家多提意见,谢谢大家啦…

查看全部问答>

中断系统

单片机第二十课:中断系统 有关中断的概念 什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工 ...…

查看全部问答>

按键开机电路功率不够

下面这个电路的功能都已经是实现了,但是功率不够,好像只能提供60mA左右的电流 而我需要至少200mA才能正常工作,请大侠们指点迷津啊 …

查看全部问答>

提供电子,单片机,软件类题目毕业设计代做(北京)

提供电子,单片机,软件类题目毕业设计代做(北京)   标签:电子        本团队提供电子工程专业,通信专业,计算机专业,控制专业,自动化专业,测控专业,检测专业,,等各类电子,软件类专业毕业设计。 主要承 ...…

查看全部问答>

关于xilinx ISE Design Suite10.1的安装和运用

在安装完软件后,打开EDK时,刚创建一个新工程什么都还没干,然后让它产生比特流就会出现error,具体形式如下:make:*** [_xps/system_routed]Error1,这是不是软件没安装好,但是软件安装时都挺顺利的,想请那位高手帮忙看看,还有我用的是xp的系统 ...…

查看全部问答>

如何去掉该死的提示“您安装的程序可能无法正确显示,因为它是为WINDOWS MOBILE 软件的旧版本而设计。”

用VS2003开发了个小程序,一部署就提示这个,点确认了之后,还可以正确执行。 但每次都提示这个,太讨厌了,请问高手,如何去掉这个提示,是不是修改点什么东西,就不提示了啊? 例如改注册表的某一个值什么的? 不胜感激啊!!!…

查看全部问答>

系统死机和中断

  我的电脑以AD-HOC方式传送文件的时候会死机。 …

查看全部问答>

有人在用汇编 编430的程序吗?没有 有问题请教呀

谁能给我解释清楚   启动  I2C 时  为什么只是  通过来控制 I/O  的方向   来达到 启动的目的????????…

查看全部问答>