微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > cc2541 UART功能

cc2541 UART功能

时间:10-02 整理:3721RD 点击:

        我现在希望用DMA实现UART功能,在接收得过程中我希望全部接收完之后产生在触发一次回调函数,这样可以提高CPU效率,依照我的理解有以下两种实现方式:

       1.在DMA的设置中将接收的第一个字节或者字作为接收数据的长度,但是在官方提高的例程中使用的是字(16位)的接收方式,而且高位是直接读取的U0BAUD(或者U1BAUD),那么得到的第一个字就会是0xD8**,这已经大大超出了接收得实际长度,要通过这种方式来实现,必须自己重新写UART这一部分程序,暂未采用

2.设置一个HAL_UART_DMA_IDLE 超时时间,在程序中没有找到dmaCfg.rxTick在什么时候对其进行赋值。在没有接收数据的时候dmaCfg.rxTick=0,有数据的时候,将dmaCfg.rxTick=ST0,这样在ST0-dmaCfg.rxTick>HAL_UART_DMA_IDLE 后就置起一个超时事件,并调用回调函数。但是在测试时发现一个问题,如果接收得时候ST0已经是一个比较大的数值,比如0xFE,ST0的最大值也才有0xFF,所以在这种情况下就永远不会满足ST0-dmaCfg.rxTick>HAL_UART_DMA_IDLE的情况,接收就会出现问题。

     以上就是我的理解,请Ti的工程师帮忙看下以上理解是否正确,是否存在以上的问题,如何解决?感谢!

ti 协议栈的例子已经具备你所需要的功能

Dear cedar_xuesong:

          ti 协议栈的例子如已满足所需功能,请帮忙解释下我上面提到的疑问,谢谢!

Dear Ti 工程师:

          以上疑问请帮忙回复一下,谢谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top