历史上的今天
返回首页

历史上的今天

今天是:2025年03月05日(星期三)

正在发生

2020年03月05日 | MSP430fr6989的串口DMA发送实验例程(从0写起,亲测可玩)

2020-03-05 来源:eefocus

本例子选择MSP430fr6989的P2.0与P2.1作为串口UCA0TXD UCA0RXD ;(代码不多,主要对寄存器的操作,急于求成都写在main.c文件,做工程不建议这样做)


主要用到这两个寄存器:


DMACTL0用于选择DMA通道;比如ADC12,串口 ,IIC,SPI,此处多说一句:DMA是一种方式,而SPI,IIC,串口等属于外设,两者不是一类概念,嘿嘿嘿


DMAxCTL用于DMA详细设置;此为重点!!!DMAxCTL包括:


DMADT:选择传输方式是一个单字节还是一个块transfer;本例子选简单的单字节transfer;


DMADSTINCR:分解单词DMA dest increase 即数据传送目标地址增加方式;有0 1 2 3四个选择,0和1代表地址不改变,2为地址递减,3为地址递增;


DMASRCINCR:同样分解DMA src increase 即数据源地址增加方式 。此刻如果疑问为何DMA需要dest和src?因为DMA(Driect Menory Access)直接内存访问;


DMAEN:EN就不解释了;


剩下的DMAxSA DMAxDA DMAxSZ就简单了,分别是src的地址 dest的地址 数据的大小size ;


下面为源代码相关部分,写在while(1)里面


/**********************************************************************************************/


void main( void )

{

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;

  PMMCTL0_H = PMMPW_H;

  PMMCTL0_L &= ~SVSHE;

  PMMCTL0_H = 0;

  //以上为电源管理不用理会


  UART_Init();//此处需要先配置好UART的波特率,校验位,高低位等等常规配置

  DMACTL0 |= DMA1TSEL__UCA0TXIFG;//选择UCA0作为DMA通道 即P2.0 P2.1复用功能

  while(1)

  {  

    uint8_t a[]={0x66,0x77,0x99};//dest 源数据一数组

    HWREG16(uart_info.base_addr  + OFS_UCAxCTLW0) |= UCSWRST;//关UCA0,把串口先关掉,否则下面地址配置不能实现

    __data16_write_addr((unsigned short)&DMA1SA, (unsigned long) &a[0]);//设置a数组的首地址为源地址

    __data16_write_addr((unsigned short)&DMA1DA, (unsigned long)(uart_info.base_addr  + OFS_UCAxTXBUF) );//设置UCAxTXBUF(串口的buffer)为目标地址


    DMA1SZ = 3;//这是需要transfer传送3个字节

    DMA1CTL = DMADT_0 | DMADSTBYTE | DMASRCBYTE | DMASRCINCR_3 | DMADSTINCR_0 | DMAEN;

             //传送单个字节//dest为byte // src为byte  // 3代表传送完一个字节源数据地址依次增加  //目标地址不增加  //使能

    HWREG16(uart_info.base_addr  + OFS_UCAxCTLW0) &= ~(UCSWRST);//开启串口

    while (0 == (DMA1CTL & DMAIFG))//等待DMA传完数据,DMAIFG=1

   {

   }

  for(int i=10000;i>=0;i--);//延时,可能是在while(1)里面发送太快,不延时数据错误

}; 

}

推荐阅读

史海拾趣

岑科(CENKER)公司的发展小趣事

在过去,国内企业在车载信号传输领域的共模电感选择有限,主要依赖进口品牌。岑科意识到这一市场的巨大空缺后,决定借助自主研发设备的优势进行研发工作。经过两三年的攻关,岑科成功研发出了ACML系列共模电感。这一系列产品在温度特性上表现优异,可在-40℃到150℃的范围内正常工作,并适用于CAN-BUS、CAN-FD、A2B及以太网等多种场景。岑科的这一研发成果不仅填补了国内市场空白,还实现了国产替代,为汽车电子行业的发展做出了重要贡献。

Eclipse Magnetics公司的发展小趣事

为了实现更长远的发展,岑科在2004年决定进军生产制造领域。公司在深圳和广西设立了工厂,开始了自主生产制造之路。在这一过程中,岑科严格控制生产流程,灵活配置资源,并建立了严格的质量管理体系,以确保产品的高水平交付。通过自主研发和创新,岑科逐渐在生产制造领域取得了显著的成果,产品线不断扩展,市场份额也逐渐增加。

Antenova公司的发展小趣事

除了优秀的产品外,Antenova公司还提供一系列专业的服务,包括产品结构确认和指导、主板Gerber文件和PCB堆叠预审和检查等。这些服务帮助客户更好地使用Antenova的产品,并提高了客户的满意度和忠诚度。通过提供卓越的服务,Antenova赢得了众多客户的信赖和支持,为公司的长期发展奠定了坚实基础。

ALCOA公司的发展小趣事

第一次世界大战期间,铝因其轻质且强度高的特性,被广泛应用于航空和汽车工业。ALCOA公司借此机会迅速发展壮大,为军方和汽车制造商提供了大量的铝材。这种需求推动了公司的技术进步和生产规模的扩大,也奠定了ALCOA在电子行业中的领先地位。

Daito Communication Apparatus Co Ltd公司的发展小趣事

自1948年成立以来,Daito公司一直致力于电子元器件的研发与生产。在公司的早期阶段,他们意识到保险丝在电子设备中的重要性,并决定投入大量资源进行研发。经过数年的努力,Daito公司成功开发出了高精度报警保险丝,这一创新产品凭借其卓越的性能和可靠性,迅速在市场上获得了认可。

高精度报警保险丝的成功并没有让Daito公司停止创新的步伐。他们不断对保险丝的失效原因与寿命进行预测和分析,通过全面质量管理,使产品质量得到了显著的提高。同时,Daito公司还将各系列保险丝的额定值多层次化,以满足不同客户的需求,扩大了顾客的选择余地。

Diconex公司的发展小趣事

在电子行业中,Diconex公司始终坚持以客户需求为导向的市场定位策略。公司深入调研市场需求,针对不同客户群体推出定制化解决方案。这种精准的市场定位使得Diconex的产品能够更好地满足客户需求,赢得了客户的信任和忠诚。同时,公司还积极拓展国际市场,与全球知名企业建立了长期稳定的合作关系。

问答坊 | AI 解惑

按Ctrl+Alt+delete没有反应

前天我用木马克星杀了一次毒,等杀完以后,再点击按Ctrl+Alt+delete的键时,系统没有任何反应,不弹出任务管理器,请问这是什么问题 请各位高手给以解答 在此万分感谢!!!…

查看全部问答>

WDK build时出现这样的错误有人知道是为什么吗?

测试WDK环境时出现这样的错误 出现这样的错误 errors in directory f:\\wdk\\wdkstudy\\first Do not assign include. 有人知道是为什么吗?…

查看全部问答>

关于串口软流控的问题

环境是这样的: 服务器---串口----终端                   |                  并口       & ...…

查看全部问答>

请教关于USB初始化的问题

根据 ST 虚拟串口 的例子,改写了一个用USB与上位机通信的程序。现在的问题是,原程序 把 USB_Init();语句放在了 main 函数里面,这样如果插着USB线给 ARM 上电的话,就会导致 usb的初始化 ...…

查看全部问答>

发布DIY进展,未完成

最近一个月多月,工作上的事情繁多,没能够及时的完成前期参与的论坛活动,深感抱歉!先开个帖子,我慢慢的补吧 本来打算做成这样的。 总体设计框图 实现的功能 1.         完成A/D转换,FFT变换 ...…

查看全部问答>

PADS9.3经典3合一教程

“读万卷书,不如行万里路,行万里路,不如阅人无数,阅人无数,不如名师点悟。”技术交流群78321575 78321575 78321575 谢谢!…

查看全部问答>

两块闲置Altera DE2开发板+一块Terasic LTM 4.3寸触摸屏

筒子们好,目前手里有闲置的两块Altera DE2开发板,九成新,只做过一个project后闲置了一年,想以1500/块价格转让。 另外,还有一块Terasic LTM 4.3寸触摸屏,同样只做过一个project,如果需要的话500转让给需要的朋友(原价1700)。 如果有朋友 ...…

查看全部问答>

MSP430F5529系统实验AD部分,问题求解

这个是网站下载的程序,因为本人用的是F5529的板子,没有P6.0的端口输入插头,所以想改用P6.7端口输入,进行试验,中间除了一些问题,请教大神指点:用P6.7输入好像无作用! //                ...…

查看全部问答>