我修改了28377的sci例程,请大神看一下程序是否有问题,sci发送没有问题,但接收时每次只能接收一位,其他位不是错的,就是乱码。
附件是我改的程序,在线等。
neal lee:
附两张图希望能吸引大神看过来
我修改了28377的sci例程,请大神看一下程序是否有问题,sci发送没有问题,但接收时每次只能接收一位,其他位不是错的,就是乱码。
附件是我改的程序,在线等。
Joey Mao:
回复 neal lee:
SCI接收和发送都是8位数据,你发任意一个ASCII字符都没有问题,但是像你发的pg这就是字符串了,需要改代码,接收要做判断,一次接收一位,发送也只能一位一位发送。
我修改了28377的sci例程,请大神看一下程序是否有问题,sci发送没有问题,但接收时每次只能接收一位,其他位不是错的,就是乱码。
附件是我改的程序,在线等。
neal lee:
回复 Joey Mao:
对不起回复晚了,我的程序里对读字符的函数定义的循环如下:
do {
ReceivedChar = ScicRegs.SCIRXBUF.all;
// Echo character back
scia_xmit(ReceivedChar);
GpioDataRegs.GPBSET.bit.GPIO56=1;
i++;
}while(ScicRegs.SCIFFRX.bit.RXFFST != 0);/**/ LoopCount++; }
我觉的这里的判断应该是正确的,同样的例子在28335里用过。关于字和字符的问题还希望能帮我指下是哪个量的问题,谢谢!
我修改了28377的sci例程,请大神看一下程序是否有问题,sci发送没有问题,但接收时每次只能接收一位,其他位不是错的,就是乱码。
附件是我改的程序,在线等。
Joey Mao:
回复 neal lee:
你的代码并没有错,只是SCIRXBUF寄存器是低八位有效,其范围不能超过255,你发任意的单个字符,查ASCII表它的值都不超过255,但是两个及两个以上的字符例如你发的pg就会溢出了,你的截图中也显示收到的变成0x00FF了
我修改了28377的sci例程,请大神看一下程序是否有问题,sci发送没有问题,但接收时每次只能接收一位,其他位不是错的,就是乱码。
附件是我改的程序,在线等。
neal lee:
回复 Joey Mao:
这个程序原来是232上用的,现在在485上用。程序代码几乎没变,用232时候也是用SCIRXBUF接收,然后用循环程序输出。这是232结果,我觉的485一样才对
谢谢大神,希望能再看看。