打印

[求教]关于PTR8500在使用过程中出现的问题

[复制链接]
1655|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunxj02|  楼主 | 2007-11-10 18:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们最近在研究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 " );
}
盼有大侠回复!谢谢!

相关帖子

沙发
hotpower| | 2007-11-10 18:35 | 只看该作者

SCON

使用特权

评论回复
板凳
hotpower| | 2007-11-10 18:48 | 只看该作者

哈哈~~~楼主得到提示走了~~~俺忘记暂借她的ID用了~~~可惜.

哈哈~~~讯通搞得鬼~~~

void TimeInit() using 0
{
  TMOD = 0x21;                //timer1 working mode 1
  SCON = 0x58;                //uart mode 1,ren==1
//  PCON = 0x00;
  PCON = 0x80;
/*----------------------------------
      定时器0定时参数设置
----------------------------------*/
  TL0 = 0;
  TH0 = T0_5mS;
  TR0 = 1;//启动定时器0
  SystemBuffers.DisplayCount = 0;
/*----------------------------------
      定时器1定时参数设置
----------------------------------*/
  TL1 = 0xfd;                    
  TH1 = 0xfd;    

使用特权

评论回复
地板
chunyang| | 2007-11-10 18:53 | 只看该作者

一定要仔细看看模块的说明文档

    一般来说,用内置MCU的同型号RF IC如9E5等做的模块,除了外部扩展功能外(得用软件甚至配合其它硬件实现),核心操作应该100%相同,当然,模块引脚序不同的可能性较大,要保证两者IO的一一对应。
    不了解该两款模块的具体结构,只是讲讲一般性原则而已,另外,厂标的产品可以向生产商咨询,这样获得的支持更直接、更详细。

使用特权

评论回复
5
hotpower| | 2007-11-10 21:43 | 只看该作者

很抱歉,楼主17:51:07给我发送邮件时俺还在此灌水垦荒呢~~~

你的邮件没附件,俺看不到图~~~

虽没实际用过9e5,但感觉应该不难.和905应该有相同之处.

如果是串口的问题就很好解决.

如果不改写现有程序,在串口助手里将停止位设置为2即可.

调试程序有很多方法和技巧,可根据硬件决定.

要多用"游击队"的方法,要机动灵活.

串口乱码很好整治~~~

1.MCU只编写串口通讯部分,且只编写发送代码.
2.向PC发送256个0x55(方波信号   0 10101010 1)
  单字符发送间隔拉大些,如>10mS.这主要是对付停止位为1/2的不同
3.串口助手(注意设置,可能由于SCON的问题,停止位有1,2的问题)应该有数据.
  若无数据(可能没收到停止位  可用示波器查看)
  若出现乱码(根据乱码判断波特率高低我网上有论述,一时找不到),
  可微调TH1(因为MCU的主频不对,如11.0592错记为12~~~).
4.肯定调试结束.
5.要还不行...俺"收费"通过QQ远程遥控~~~

"收费"办法:
在QQ里暂借你在21IC的合法注册ID几分钟,用完立即归还~~~

哈哈~~~不知俺"收费"是否合理???

如果你已经投票了,那咱这笔"生意"就算泡汤了~~~
相关链接:http://www.**/blog/hotpower/57751/message.aspx

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

1

粉丝