请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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; }