智能车制作

标题: SCI中一个奇怪的问题!请教 [打印本页]

作者: 极意旋风    时间: 2010-3-23 16:17
标题: SCI中一个奇怪的问题!请教
      今天调串口时发送的数据总是不对,最后将整个过程中SCI的各寄存器的值记录对比发现了一个奇怪的问题!
当一开始读标志寄存器时:ReadStatus1        = SCI0SR1,寄存器没有清零,觉得很奇怪想论坛高手云
集,请各位指点一迷津。(我用的是飞思卡尔S12DG128)
···谢谢!!!

void SCI_Init( void )
{
        SCI0BDL        = ( byte ) ( BusClock / BaudRate / 16 );
        SCI0BDH = 0X00;
        SCI0CR1        = 0x00;                                               
        SCI0CR2        = 0x2C;                                               
}
void        SCI_Tx( uchar TxData )
{
        unsigned char        ReadStatus1;
       
        ReadStatus1        = SCI0SR1;
        SCI0DRH        = 0;
        SCI0DRL        = TxData;                                       
        while( !SCI0SR1_TDRE );                               
        ReadStatus1        = SCI0SR1;                               
}
作者: 极意旋风    时间: 2010-3-23 21:24
很急呀!求教各位看到主题的论坛同盟们,帮帮忙提提意见也行。
不胜感激!!!
作者: leegee    时间: 2010-3-24 16:18
SCI0SR1的TDRE和TC默认设置为1,读SCI0SR1相当于将其恢复默认设置,是1,而不是0。你可以看看
《SCI Block Guide》
发送的数据总是不对,有可能是波特率设置有问题。
作者: 极意旋风    时间: 2010-3-24 19:28
回复 3# leegee


    感谢LEEGEE
作者: 李威小威    时间: 2011-3-12 01:23
xs128的SCI回显程序
作者: 小马    时间: 2011-8-30 14:37
波特率设置没问题,好像也有类似的问题
作者: prk-ing    时间: 2012-2-19 10:27
SCI0BDL= ( byte ) ( BusClock / BaudRate / 16 );
        SCI0BDH = 0X00;
这两行换一下顺序看看




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2