你好,想请教个问题:
我用的是ZStack-Lighting_Kit (http://processors.wiki.ti.com/index.php/ZStack-Lighting_Kit)
IAR Assembler for 8051 (8.30.2)
目标工程是Texas Instruments\Z-Stack Lighting 1.0.2\Projects\zstack\ZLL\SampleApp\CC253x\SampleApp.eww
在ZLLRC工程的基础上,做了实验板出来,开出了串口0(原来P0_2,P0_3是用作按键),将
Texas Instruments\ZStack-CC2530-2.5.1a\Projects\zstack\Utilities\SerialApp\CC2530DB\SerialApp.eww工程的串口部分移植SampleApp.eww中去,在波特率38400上串口能够成功收发。但是由于要兼容公司老产品,串口波特率需要工作在1200上,可是看到手册里面最低只写到了2400 ,我按照网上一些网友的经验资料,改到了2400,会出现丢码的情况。
主要改动如下:
hal_board_cfg.h文件串口部分也做了相应的修改。将SerialApp.c和.h文件拷贝过来。
SerialApp.c文件中将#define SERIAL_APP_BAUD HAL_UART_BR_38400 改成了 HAL_UART_BR_2400//HAL_UART_BR_1200
_hal_uart_dma.c文件(由Texas Instruments\Z-Stack Lighting 1.0.2\Components\hal\target\CC2530ARC目录下复制过来的)的HalUARTOpenDMA函数中,增加了HAL_UART_BR_2400和HAL_UART_BR_1200 的相关设置,
case HAL_UART_BR_1200:
UxGCR = 5;
dmaCfg.txTick = 274; //这里的值超出了txTick的数据类型范围uin8,暂时没想到怎么解决,
case HAL_UART_BR_2400:
UxGCR = 6;
dmaCfg.txTick = 137;
采用2400通信的时候,会出现丢码的情况,比如我讲26个字母一次传入,要么就是丢l或者k ,w或者x,有时候就干脆完全没反应,什么都不输出。
请问能不能够将2530串口的工作波特率射到1200上呢?需要如何修改才能实现?
VV:
你在2.5.1a协议栈的SerialApp工程里面,把baudrate改到2400,通信会出现问题吗?
Futing Dong:
回复 VV:
刚测试过了,在SerialApp工程里设为2400,dmaCfg.txTick计算得136.5,取137(参考case HAL_UART_BR_9600:中注释部分的计算方法),通信同样会遇到问题,我输入“abcdefghijklmnopqrstuvwxyz ”,共27个字符(包括最后的空格),输出只有一个字母a,之后的都没有;要是把dmaCfg.txTick改为37(瞎改),回传少了两个字母(l或者k和w或者x),而且总是少两个。
case HAL_UART_BR_2400: UxGCR = 6; dmaCfg.txTick = 137;//37 break;
不知道是哪儿没有设置对?
VV:
回复 Futing Dong:
能否单独搞一个UART的功能测试下,2400没问题的。
http://e2e.ti.com/support/wireless_connectivity/f/158/p/116784/414696.aspx#414696
chao li10:
回复 VV:
我在开发过程中也碰到这个问题,不知有没有解决2400bps不稳定问题,另外1200bps能否通讯。
Guanqiang li:
回复 chao li10:
你好,你的串口通讯的波特率1200和2400的实现了吗,怎么解决的?求指点,,,
Zhifeng Bai:
回复 Guanqiang li:
请问1200的波特率能用了吗?我们现在一直没有设置成功。