我们最近在研究NRF9E5,我们自己做了一个基于nrf9e5的射频收发系统,也根据已有的一些程序调试串口通讯,但在使用中出现了以下问题: 串口通讯一直调试不通,返回值持续为乱码。
因为之前我们用过PTR5000,而且调试是成功的,所以过PTR5000及PTR8500两款产品进行调研,认为:
1.两款产品使用芯片在单片机内核上是基本一致的,主要不同在RF射频部分,而非与计算机的通讯部分;
2.对两款产品C编程时所使用的头文件进行比较,发现:这两款产品在关于串口通讯方面使用的寄存器名称和地址都是一致的,我们认为这两款产品与串口通讯部分的程序应该也是一致的,并且可以互相交叉使用。
3.经过与一些网上公布的成熟程序相比较,我们使用的串口通讯程序是正确的。
所以进行了以下步骤的测试:
l 对EEPROM下载串口通讯部分程序
l 在调试板上插接PTR5000,发现返回值正常
l 在测试板上插接PTR8500,发现返回值为乱码,而且乱码还会随着程序返回内容的不同而改变
由以上问题,我们想请教一下: 1.为何会出现上述乱码现象(软件及硬件军可能出现的问题是什么?)
2.这两款模块在使用过程中,外围电路有什么不同(主要指串行通讯和与EEPROM通讯方面)
PS:在下文中附上我们使用的用于调试NRF9E5的串口通讯程序。谢谢!
#include <Nordic
eg9e5.h> void Init(void) { TH1 = 243; // 4800@4MHz (when T1M=1 and SMOD=1) CKCON |= 0x10; // T1M=1 (/4 timer clock) PCON = 0x80; // SMOD=1 (double baud rate) SCON = 0x52; // Serial mode1, enable receiver TMOD = 0x20; // Timer1 8bit auto reload TR1 = 1; // Start timer1 P0_ALT |= 0x06; // Select alternate functions on pins P0.1 and P0.2 P0_DIR |= 0x02; // P0.1 (RxD) is input }
void PutChar(char c) { SBUF = c; while( ! TI ) ; TI = 0; }
void PutString(const char *s) { while(*s != 0) PutChar(*s++); }
void main(void) { int i ; Init(); for (i=0;i<5;i++) PutString( " Hello World ! n " ); } 盼有大侠回复!谢谢! |