0

我目前正在使用带有 UART 的 PIC24,并且能够接收(Rx)和发送(Tx)字符。当尝试接收连续的字符流时会出现问题,其中开始位和停止位之间没有延迟。

UART设置为;7 个数据位,1 个奇偶校验位和 1 个停止位,1200 波特

在终端上显示接收到的字符时,它表明只有某些字符才能正确打印。我不认为这是波特率错误,因为当开始位和停止位之间的小延迟(即按住键盘上的键)时,我能够正确接收和打印字符。

要读取连续发送的两个字符,我正在执行以下操作。

char buf[512];

while (U2STAbits.URXDA == 0); //wait while Rx buffer is full 
buf[0] = U2RXREG;

while (U2STAbits.URXDA == 0); //wait while Rx buffer is full 
buf[1] = U2RXREG;


while (U2STAbits.UTXBF); //wait while Tx Bit not free
U2TXREG = buf[0];

while (U2STAbits.UTXBF); //wait while Tx Bit not free
U2TXREG = buf[1];
4

1 回答 1

1

可能还有其他我们看不到的问题,因为您只给了我们一小部分代码。

无论如何,随着您评论中的其他信息,这是奇偶校验不匹配:

字符收到罚款:

char  code  binary    # of 1-bits
'A'   0x41  01000001  2 = even
'f'   0x66  01100110  4 = even
'?'   0x3f  00111111  6 = even

未收到字符:

char  code  binary    # of 1-bits
'a'   0x61  01100001  3 = odd
'b'   0x62  01100010  3 = odd
'1'   0x31  00110001  3 = odd

请下次不要在评论中添加其他信息,而是编辑您的问题。这样,所有访问者都可以将所有内容放在一起,而无需浏览所有评论。

于 2019-09-11T06:18:34.850 回答