打印
[PIC®/AVR®/dsPIC®产品]

我的PIC33FJ128串口发送数据最多只能发送5个字节

[复制链接]
2209|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
峰狂战队|  楼主 | 2014-7-9 11:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在在用dsPIC33FJ128GP706这个片子控制GPRS模块发送短信,我用串口发送AT指令,有的一条指令包含字节数超过5个,用串口发送时,最多只能发送5个,我的串口发送程序如下:

void messagesend(void)
{
  uchar i=0;
  uchar SIMCON[]={'A','T','\r\n','+','C','M'};
  for(i=0;i<7;i++)
   {
    U2TXREG=SIMCON[i];
    U2STAbits.UTXEN = 1;
   }
  
  delay(200000);
}
  我用串口助手进行实验时只接收到了前五个字节,后面的都丢了  这是怎么回事 请教大神指导。。。
沙发
lanmp| | 2014-7-9 11:41 | 只看该作者
因为只有4个FIFO。话说您都不等发送标志的么?

使用特权

评论回复
板凳
峰狂战队|  楼主 | 2014-7-9 12:36 | 只看该作者
lanmp 发表于 2014-7-9 11:41
因为只有4个FIFO。话说您都不等发送标志的么?

这个芯片好像只有IFS1bits.U2RXIF中断标志位、U2STAbits.TRMT发送移位寄存器空位可以判断发送与否,我没有找到发送标志,中断标志位和移位寄存器空位我都使用过 也是不行,请问现在我该怎么做?  我就是按照按键按下进入子程序,然后发送数据,中断也试过,也不行    该怎么才能连续发送数据?

使用特权

评论回复
地板
lanmp| | 2014-7-9 14:24 | 只看该作者
RXIF是接收中端,当然不行了。寄存器空肯定可以得。

使用特权

评论回复
5
峰狂战队|  楼主 | 2014-7-9 16:12 | 只看该作者
lanmp 发表于 2014-7-9 14:24
RXIF是接收中端,当然不行了。寄存器空肯定可以得。

嗯  用的发送寄存器空来判断是否可以进行下一次发送,开始不能连续发送是因为我用的是if语句进行读取if(U2STAbits.TRMT==1)  这样的话就不行,因为根本来不及识别,现在改完while(U2STAbits.TRMT==0)来判断就行了    谢谢回复   

使用特权

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

本版积分规则

4

主题

13

帖子

0

粉丝