请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28377S 工具/软件:Code Composer Studio
你(们)好
使用示例、我为 SCI-C 编写了程序、但遇到了问题。我使用外部 RS232传输数据。 当我将波特率设置为115200或57600时、我接收到0。 当我使用较低波特率(例如9600)时、我会收到正确的值。 您是否知道我的代码有什么问题?
感谢你的帮助
此致
Szymon
#include "F28x_Project.h" uint16循环计数; uint16错误计数; void scia_loopback _init (void); void scia_fifo_init (void); void scia_xmit (int a); void error(); void main (void) { uint16 SendChar; uint16 ReceivedChar; InitSysCtrl(); InitGpio(); EALLOW; GpioCtrlRegs.GPCMUX2.bit.GPIO89 = 2; // TX GpioCtrlRegs.GPCMUX2.bit.GPIO90 = 2; //接收 GpioCtrlRegs.GPCGMUX2.bit.GPIO89=1; // TX GpioCtrlRegs.GPCGMUX2.bit.GPIO90 = 1;// Rx Dint; IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EnableInterrupts(); LoopCount = 0; 错误计数= 0; scia_fifo_init(); //初始化 SCI FIFO scia_loopback_init ();//初始化用于数字回路的 SCI SendChar = 0xAF; // for (;;) { scia_xmit (SendChar); // //等待 RRDY/RXFFST =1、等待 FIFO 中有1个数据可用 // while (scicRegs.SCIFFRX.bit.RXFFST ==0){} // //检查接收到的字符 // ReceivedChar = ScicRegs.SCIRXBUF.ALL; if (ReceivedChar!= SendChar) { error(); } LoopCount++; } } // //错误-计算错误的函数 // void error() { ErrorCount++; // asm (" ESTOP0");//取消注释以在此处停止测试 // for (;); } // scia_loopback _init -配置 SCIA 设置 // void scia_loopback _init () { // //注意:SCIA 外设的时钟被打开 //在 InitSysCtrl()函数中 // ScicRegs.SCICCR.ALL = 0x0007;// 1停止位,无环回 //无奇偶校验,8个字符位, //异步模式,空闲线协议 ScicRegs.SCICTL1.ALL = 0x0003;//启用 TX、RX、内部 SCICLK、 //禁用 RX ERR、睡眠、TXWAKE ScicRegs.SCICTL2.all = 0x0003; ScicRegs.SCICTL2.bit.TXINTENA=1; ScicRegs.SCICTL2.bit.RXBKINTENA=1; ScicRegs.SCIHBAUD.ALL = 0x03;//对于115200 9600 - 0x02 ScicRegs.SCILBAUD.ALL = 0x06;//对于115200 9600 - 0x8B scicRegs.SCICCR.bit.LOOPBKENA=1;//启用回路 ScicRegs.SCICTL1.ALL = 0x0023; //从复位中撤回 SCI } // scia_xmit -从 SCI 发送字符 // void scia_xmit (int a) { scicRegs.SCITXBUF.ALL=a; } // scia_fifo_init -初始化 SCI FIFO // void scia_fifo_init () { ScicRegs.SCIFFTX.ALL = 0xE040; ScicRegs.SCIFFRX.ALL = 0x2044; ScicRegs.SCIFFCT.ALL = 0x0; }![]()