工具与软件:
德克萨斯州达拉斯 Greetins
我们使用的是它的 TMS320F28379D 电路板、一切都运行良好。 我们将 TMS 用作硬件控制器、从那里我们使用 UART 向 HMI 发送一些数据、并且从 HMI、我们使用 UART 通信返回(接收)数据、那么情况会是这样: 
要取出控制卡并按以下方式使用: 
TMS320F28075PZPT
闪存且一切都在工作、我们已经完成了引脚连接、但唯一的问题是、当我们尝试使用 UART 进行通信时、并不是偶然的。
I hava 已检查:
SCIB:
GPIO14_EPWM8A_SCITXDB_MCLKXB_OUTPUTXBAR3 -> RXB
GPIO15_EPWM8B_SCIRXDB_MFSXB_OUTPUTXBAR4 -> TXB
SCIA:
GPIO42_SDAA_SCITXDA_USB0DM -> TXA
GPIO43_SCLA_SCIRXDA_USB0DP -> RXA
使用的代码:
此代码在 TMS320F28379D 上正常工作、但在 TMS320F28075PZPT 板上、它不工作、我们检查了引脚连接、这是正常的。 但仍然无法正常工作、代码正在刷写、但数据无法发送。
我们使用两个引脚连接并在此工作代码上相应地修改代码(SCIA 和 SCIB)、当前代码适用于 SCIA。
#include "driverlib.h"
#include "device.h"
#include //检查-2的双向通信
#define BAUD_RATE 115200
volatile int received_value = 0;//存储接收到的数据
volatile int send_value = 5;//要发送的测试值(ASCII'A')
void initSCIB (void);
void configureUART (void);
void sendUARTData (uint16_t data);
void main (void)
{
device_init();
DEVICE_DELAY_US (1000000);
device_initGPIO();
//配置 GPIO19以实现 UART 接收(RX)
GPIO_setPadConfig (43、GPIO_PIN_TYPE_PULLUP);
GPIO_setPinConfig (GPIO_43_SCIRXDA);
GPIO_setQualificationMode (43、GPIO_QUAL_ASYNC);
//配置 GPIO18以进行 UART 发送(TX)
GPIO_setPadConfig (42、GPIO_PIN_TYPE_STD);
GPIO_setPinConfig (GPIO_42_SCITXDA);
initSCIB();
configureUART();
while (1)
{
//每1秒发送一次数据
sendUARTData (send_value);
DEVICE_DELAY_US (1000000);
//检查接收 FIFO 中是否有数据可用
如果(SCI_getRxFIFOStatus (SCIA_BASE)!= SCI_FIFO_RX0)
{
Receive_value = SCI_readCharBlockingFIFO (SCIA_BASE);//读取接收到的数据
}
}
}
void initSCIB (void)
{
SYSCTL_enablePeripheral (SYSCTL_PERIPH_CLK_SCIB);
SCI_performSoftwareReset (SCIA_BASE);
SCI_resetChannels (SCIA_BASE);
SCI_clearInterruptStatus (SCIA_BASE、SCI_INT_TXFF | SCI_INT_RXFF);
SCI_resetRxFIFO (SCIA_BASE);
SCI_enableFIFO (SCIA_BASE);
SCI_setConfig (SCIA_BASE、DEVICE_LSPCLK_FREQ、BAUD_RATE、
(SCI_CONFIG_WLEN_8 | SCI_CONFIG_STOP_ONE | SCI_CONFIG_PAR_NONE);
SCI_enableModule (SCIA_BASE);
SCI_performSoftwareReset (SCIA_BASE);
DEVICE_DELAY_US (1000);
}
void configureUART (void)
{
SCI_setFIFOInterruptLevel (SCIA_BASE、SCI_FIFO_TX1、SCI_FIFO_RX1);
SCI_clearInterruptStatus (SCIA_BASE、SCI_INT_RXFF);
SCI_enableFIFO (SCIA_BASE);
}
void sendUARTData (uint16_t data)
{
while (SCI_getTxFIFOStatus (SCIA_BASE)=SCI_FIFO_TX16);//如果 FIFO 已满、则等待
SCI_writeCharBlockingFIFO (SCIA_BASE、DATA);//发送数据
}
对于我们预期的输出、需要进行任何修改、例如对代码或连接进行修改。