因为在tinyos系统下,节点写flash的速度过慢,开始怀疑是不是SPI的速度有问题,所以后来就直接在IAR上裸机读写FLASH,看看速度可以去到多少。用到了430的SPI的DMA模式
DMA模式之所以会更快,是因为所要传输的数据省去了要经过CPU处理这一步,直接在内部总线传输到DMA寄存器,然后DMA寄存器在根据情况通过总线传输到目标寄存器。这里的总线,我也还没搞清楚。在DMA传输数据的时候,虽然说CPU可以继续干自己的活,但是如果CPU要使用总线的话,而总线被DMA占用了,这时候该怎么办?
void SpiDmaSend(uint8_t cmd,uint8_t *tx_addr, uint8_t *rx_addr,uint16_t len)
{
DMACTL0 =DMA2TSEL_3 + DMA0TSEL_4;
IFG1 &= ~( UTXIFG0 | URXIFG0 ); //Clear interrupt flag
DMA2SA = (unsigned int)&U0RXBUF; // Src address = UART RX Buffer
DMA2DA = (unsigned int) rx_addr; // Dst address = rbuf
DMA2SZ = len;
DMA2CTL = DMADT_0 + DMASBDB ;
cmd==SPI_READ ? (DMA2CTL|=DMADSTINCR_3):(DMA2CTL|=DMADSTINCR_0);
DMA0SA = (unsigned int) tx_addr;
DMA0DA = (unsigned int)&U0TXBUF;
DMA0SZ = len ;
DMA0CTL = DMASBDB;
cmd==SPI_WRITE? (DMA0CTL|=DMASRCINCR_3):(DMA0CTL|=DMASRCINCR_0,DMA0SZ+=1);
DMA2CTL|= DMAEN;
DMA0CTL|= DMAEN;
IFG1 |= UTXIFG0;
while((DMA0CTL & DMAIFG)==0);
DMA1CTL&=~ DMAEN;
DMA2CTL&=~ DMAEN;
IFG1 &=~UTXIFG0;
DMA1CTL &= ~DMAIFG;
}
使用DMA模式,首先就是选好通道,MSP430里面,有三个DMA通道。因为用到SPI双工通信,所以发送和接收各用一个通道。然后,就是配置通道的触发方式,各通道要传输的字节数,还有,通道的传输方式,是单字节传输(single)还是块传输(block)。同时,配置好,源地址和目的地址的地址指针是否要递增。
关于Single和Block传输方式的区别,我当时看datasheet也是看不懂,后来上网查,就连作者本人也说了文档的说明看上去会让人产生迷惑,呵呵。那时候我忽然觉得,原来不全是我太笨才看不懂呀。关于传输模式的区别,大家还是看看参考手册,俺也说不清楚。
关键字:MSP430 SPI接口 DMA模式通信
引用地址:
MSP430 SPI接口DMA模式通信
推荐阅读最新更新时间:2024-11-02 21:03
基于MSP430单片机和移动通信的血糖监护系统设计
1 血糖监护系统概述 糖尿病是危害人类健康的四大主要疾病之一,目前没有根治的办法,只能通过血糖监测对糖尿病加以控制。血糖仪的出现,大大方便了糖尿病患者自行监测血糖。为了能更好地利用无线网络资源,方便用户随时随地的测量,开发了一种基于移动通信的血糖监护系统。 基于移动通信的血糖监护系统由两大部分组成:手机血糖仪与糖尿病监护中心。工作模式如图1所示。糖尿病患者利用随身携带的手机血糖仪可随时监测血糖,监护中心通过GSM网络接收患者的血糖值,并反馈适当的诊断结论。 手机使用MotorolA388c,血糖仪是吉林大学仪器学院自主开发的以MSP430单片机与酶电极传感器等为主的血糖测试仪,通过串口连接手机,利用手机的键盘和液晶屏控制
[工业控制]
MSP430 5xx/6xx 以REFO或XT1为时钟源的DCO编程实例
当MSP430 5xx/6xx 系列外部接入32768Hz的低频晶振时,满足不了需要高速运行的应用。所以需要通过MCU内部的DCO(数字控制振荡器)和FLL(锁相环)将低速时钟32768Hz进行倍频,达到需要的目标频率。 DCO是一个集成的数字控制振荡器。DCO频率可以通过软件使用UCSCTL1.DCORSEL、UCSCTL0.DCO和UCSCTL0.MOD位进行调整。DCO频率可由FLL选择性地稳定到FLLREFCLK/n的多个倍频。FLL可以接受由UCSCTL3.SELREF位选择的不同参考时钟源。参考时钟源包括XT1CLK、REFOCLK或XT2CLK(如果可用)。n的值由UCSCTL3.FLLREFDIV位(n=1、2
[单片机]
升压斩波电路
升压斩波电路 本开关稳压电源是以MSP430F449为主控制器件,它是 TI 公司生产的16位超低功耗特性的功能强大的单片机,其低功耗的优点有利于系统效率高的要求,且其ADCl2是高精度的12位A/D转换模块,有高速、通用的特点。这里使用MSP430完成电压反馈的PI调节;PWM波产生,基准电压设定;电压电流显示;过电流保护等。 系统框图如图1所示。
[单片机]
基于MSP430x09x MCU的电动剃须刀系统设计
1 MSP430x09x简介 MSP430x09x是MSP430系列单片机中首款0.9V工作电压的MCU. 这一系列功能强大,能够方便的应用于微型电机控制,红外传输以及电源检测等场合中,另外,其0.9V工作特性可以在单电池供电的消费类电子中得到广泛应用。MSP430x09x包含丰富的功能模块(见图1)。该系列解决方案不仅高度整合了16位定时器、看门狗定时器、11 个带中断功能的I/O以及零功耗低压复位功能(BOR),此外还集成了可配置为ADC、DAC、比较器、系统电压监控器(SVS)以及温度传感器的全新模拟功能池外设,全部工作电压仅为0.9V.16位的RISC架构CPU及其指令集可与现有MSP430 MCU器件相兼容,工
[单片机]
基于硅压式传感器和MSP430F149单片机的电子血压计设计
1 引言 测量血压的传统仪器是机械式水银血压计,电子血压计近几年才在市场上出现。电子血压计与传统血压计相比,虽然操作简单、使用方便,但准确性、稳定性往往不太理想。本设计力求准确、稳定,以适用于老年人或病人随时监测自己血压情况及临床医学检测。 2 系统的硬件设计 本设计采用Motorola公司的MPX53GC硅压式传感器和TI公司MSP430F149单片机为主要器件, 构成电子血压计,系统构成如图1。系统由MCU、 传感器、LCD液晶显示器、操作面板、充放气控制 电路、气泵和气阀、蜂鸣器、存贮器、电源等部分 构成。 2.1 微处理器的选择 单片机是整个系统的大脑,它不仅要对系统进 行
[单片机]
基于MSP430F413与贴片电阻的智能遥控器
引言 目前市场上常见的无线遥控器多数为四键和十二键,主要用于汽车防盗系统、家庭防盗系统及遥控玩具等方面,这些应用简单、实用、成本低。但对于一些工程中需要距离在100米以上,控制或设定一些数据时,并要求一个遥控器对多于12个甚至上百个设备时,上述遥控器对操作人员就不方便,而且系统性能不够稳定。鉴于上述情况我们便提出在此基础上,采用单片机编写地址,通过操作键设置,液晶显示遥控器的输出。同时对耗电量、多个控制的设定、便于携带、操作方便及性能稳定等要求,设计开发出一种新型智能遥控器。该型遥控器以TI公司的超低功耗单片机MSP430F413为微处理器,配有低功耗3位液晶显示器EDS812A,整个系统采用锂电池和高能氧化银电池作为供电电源
[单片机]
MSP430内部看门狗及复位电路的研究
今市面上流行的一些单片机,多嵌有内部WDT,如TI的MSP430系列,Philips的P87XXX和P89XXX系列,MICroChip的PIC列,Atmel的AT89SXX系列和HoLTEk公司的Htxxx系列。但是这些内部看门狗在工作时,多存在一定的误差。一些工程师在设计的过程中,由于忽略了这一点,导致系统出现异常。MSP430系列单片机是美国德州仪器公司(TI)近几年开发的新一代单片机,该系列是一款16位、具有精简指令集、超低功耗的全新概念混合型单片机。在众多单片机系列中,由于它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,已成为一颗耀眼的新星。其内部自带看门狗及复位电路,理论上如果程序跑飞,可用看门狗将其复位。但在实
[单片机]
MSP430的HART从机控制器的设计
引言 现代工业生产活动的正常进行离不开现场设备和与之配套的控制主机,为了充分发挥现场设备的性能,控制主机和现场设备之间必须要有一套高效可靠的通信协议。传统工业控制领域多使用4~20 mA模拟信号来完成现场设备与控制主机之间的通信,但是模拟信号传输数据具有传输方向单一、传输数据量少等诸多不足。为了解决这些问题,在20世纪80年代中期,美国Rosemount公司提出了高速可寻址远程传感器协议(Highway Addressable Remote Transducer,HART)用来增强现场设备与控制主机之间的通信能力。 HART协议是一种用于现场智能设备与控制主机或监测系统之间的通过模拟线路传输数字信号的通信协议,在20世纪9
[单片机]