MSP430 SPI接口DMA模式通信

发布者:明月昊天最新更新时间:2018-05-05 来源: eefocus关键字:MSP430  SPI接口  DMA模式通信 手机看文章 扫描二维码
随时随地手机看文章

因为在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模式通信

上一篇:MSP430 SD卡SPI读写操作(1) —— SD卡命令
下一篇:msp430f149波特率设置

推荐阅读最新更新时间:2024-03-16 16:01

如何将MSP430单片机中的long数据烧写至Flash中去
从RAM地址0x0200中读取一个long数据,并烧写至地址为0x1800的Flash中。 代码: #include“io430.h” void main(void) { //初始化RAM信息段的指针 unsigned long * RAM_ptr = (unsigned long *) 0x0200; //初始化Flash信息段的指针 unsigned long * Flash_ptr = (unsigned long *) 0x1800; //存放数据的变量 unsigned long value; WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 P4DIR |= BIT2; //设置P4.2为输出
[单片机]
如何将<font color='red'>MSP430</font>单片机中的long数据烧写至Flash中去
关于MSP430f149Ti官方例子-UART01
官方源码 //****************************************************************************** // MSP-FET430P140 Demo - USART0, UART 115200 Echo ISR, HF XTAL ACLK // // Description: Echo a received character, RX ISR used. Normal mode is LPM0, // USART0 RX interrupt triggers TX Echo. // ACLK = MCLK = UCLK0 = LFXT1 = 8MHz // Bau
[单片机]
关于<font color='red'>MSP430</font>f149Ti官方例子-UART01
MSP430F5438 I2C学习笔记 硬件I2C等待法+AT24C02
0. 前言 对于大多数单片机来说,I2C成了一个老大难问题。从51时代开始,软件模拟I2C成了主流,甚至到ARMCortex M3大行其道的今天,软件模拟I2C依然是使用最广的方法。虽然软件模拟可以解决所有的问题,但是总感觉没有充分发挥MCU内部的硬件资源。查阅了所有关于MSP430F5系列的图书,没有关于硬件I2C的应用代码,自己通过调试摸索,把经验总结之后和大家分享,希望大家喜欢。同时,I2C的使用可以分为等待法和中断法,从理解的角度来说等待法思路清晰易于上手,从功耗的角度出发,中断法可以灵活的进入低功耗模式,但是不易理解。本文先从等待法入手。 MSP430F5系列的硬件I2C使用大致会有以下问题: n I2C地址设定。一
[单片机]
低功耗MSP430单片机 在3V与5V混合系统中的逻辑接口技术
MSP430超低功耗微处理器是TI公司推出的一种新型单片机。它具有16位精简指令结构,内含12位快速ADC/Slope ADC,内含60K字节FLASH ROM,2K字节RAM,片内资源丰富,有ADC、PWM、若干TIME、串行口、WATCHDOG、比较器、模拟信号,有多种省电模式,功耗特别小,一颗电池可工作10年。开发简单,仿真器价格低廉,不需昂贵的编程器。 MSP430其特点有:1.8V~3.6V低电压供电;高效16位RISC CPU可以确保任务的快速执行,缩短了工作时间,大多数指令可以在一个时钟周期里完成;6微秒的快速启动时间可以延长待机时间并使启动更加迅速,降低了电池的功耗。MSP430产品系列可以提供多种存储器选
[单片机]
低功耗<font color='red'>MSP430</font>单片机 在3V与5V混合系统中的逻辑接口技术
基于低功耗单片机MSP430来控制LED灯光的强度
1 热释电红外传感器与菲涅耳透镜 利用红外线传感器可以检测到物体发射出的红外线,从而可以检测到不同物体的存在。制造热释电红外传感器的材料,以陶瓷氧化物及压电晶体用得最多,这类材料具有强烈的自发极化性能,当受到热辐射而产生温度变化时介质的极化状态随之发生变化。由于内部电荷的速度远远高于表面电荷的变化速度,晶体两端会产生数量相等而极性相反的独立电荷,这就是电介质的热释电效应。热释电红外传感器就是利用被测物体热辐射引起敏感元件温度的变化进行探测的。热释电红外传感器被广泛应用到安防监控、电子防盗、自动控制照明和工业自动控制等领域。 物体释放的红外线能量十分微弱,当直接用热释电红外传感器接收红外线时,灵敏度相对较低,一般情况下很难满足系
[单片机]
基于低功耗单片机<font color='red'>MSP430</font>来控制LED灯光的强度
基于STM32编写一个SPI接口例程
引言 SPI是串行外设接口的缩写,是一种高速的,全双工,同步的通信总线。由于SPI高速和同步的特性,使其成为嵌入式系统和小型设备中使用最广泛的几种通信接口之一。本文将详细讲解一下SPI,并且最后基于STM32编写一个例程。 介绍 SPI简介 SPI(Serial Peripheral Interface)是一种串行外设接口,用于在微控制器(MCU)或数字信号处理器(DSP)等主设备与外部设备之间进行通信。SPI的设计旨在实现高速数据传输和简单的硬件实现。 SPI接口通常由一个主设备(Master)和一个或多个从设备(Slave)组成。主设备控制通信的时序和数据传输,而从设备根据主设备的指令进行响应。SPI通信基于全双工传输方式
[单片机]
基于STM32编写一个<font color='red'>SPI接口</font>例程
MSP430的内部函数
内部函数:编译器提供的一些针对目标CPU的特殊函数,以及经过汇编高度优化的常用函数。 MSP430的ICC430编译器提供的内部函数如: __delay_cycles(long int cycles)靠CPU空操作延迟cycles个时钟周期。 程序中不需要包含任何头文件,可以直接使用内部函数 常用精确延时函数如下: #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(doub
[单片机]
设计基于MSP430单片机的微功耗中文人机界面
在现代便携式智能仪器或手持设备中,中文人机界面成为一种事实上的行业标准。能显示汉字的图形点阵液晶和可输进数字的小键盘已成为智能设备必不可少的组成部分。同时作为便携式设备基本要求的低功耗特性也贯串于中文人机界面的设计始终。 这种低功耗中文人机交互界面需要设计者在选取MCU和具体元器件上有特殊考虑。微功耗、小体积应作为选择相关器件的首要要求。 一、MSP430系列FLASH型单片机的微功耗特点 德州仪器公司(TI)推出的MSP430F14x系列是超低功耗Flash型16位RISC指令集单片机。它采用 冯-纽曼 结构,RAM、ROM和全部外围模块都位于同一个地址空间内。其具有丰富的片内外围,性价比极高。 MSP43
[单片机]
设计基于<font color='red'>MSP430</font>单片机的微功耗中文人机界面
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved