请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR2355 您好...
我正在读取 I2C 寄存器、并在19200年通过 UART 将其传输到 PC (使用 RealTerm)。 我已经验证了 TXIE 是否已设置,CNTR 和 UART_TX_CNTR 是否始终是正确的值...我也对 itoa 函数充满信心。 我已经检查了 val[]是否也正确。 但是、我在端口上看不到良好的数据。 例如、我将0x34写入寄存器、回读后的 UART 显示30 (后跟一些奇怪的字符...如前所述、所有变量在 CCS 中看起来都是正确的、因此我倾向于将其视为代码。
1. 对我的错事有什么想法?
2. 在设置 TXIE 之前应该加载 TXBUFFER、还是可以像我一样加载 TXBUFFER? (置位 TXIE,进入 ISR,然后置位 TXBUFFER)。。。。这似乎是正常的,因为我的第一个字节3看起来是正确的。。。。。
谢谢
我有以下 ISR TX UART 代码:
if (cntr == uart_tx_cntr)
{
applicationUART.pSysCommsA->UCAxTXBUF = 0x13;
applicationUART.pSysCommsA->UCAxIE &= ~UCTXIE;
cntr = 0;
}
else if (!(cntr % 2)) //even
applicationUART.pSysCommsA->UCAxTXBUF = itoa((val[cntr] >> 4) & 0xF);
else
applicationUART.pSysCommsA->UCAxTXBUF = itoa((val[cntr]) & 0xF);
cntr++;
break;
主代码:
if (Mutex.UART_tx)
{
/*
* send register to UART
*/
i2cstate = I2CIDLE;
Mutex.UART_tx = F;
applicationUART.pSysCommsA->UCAxIE |= UCTXIE;
}