Thread 中讨论的其他器件:C2000WARE
工具与软件:
我希望这封邮件能让您满意。
我在做 硬件连接如下所示:
F28335TX 至 RS232转换器 RX 至(连接的 DB9连接器)、使用 TTL 转换器将 TTL 输出转换为 RS232 DB9引脚连接器。
F28335 RX 到 RS232转换器 TX 到(连接的 DB9连接器)、使用 TTL 转换器将 TTL 输出转换为 RS232 DB9引脚连接器。
从 F28335到 外部器件 RS232 (LabView) 的数据发送正在正确执行。 但是、 由 外部器件 RS232 (LabView)发送的 F28335数据接收未执行。
已针对内部环路和外部环路(通过将 TX 线路连接到 RX 线路)进行测试、正在正确执行。
查询:
1.您能告诉我,所有的配置都需要完成吗?
2.如果我的 SCI 数据接收器和配置功能代码不正确、请更正 X 中所附的代码吗?
/* * SCI.c * * Created on: Aug 27, 2024 * Author: CG00844381 */ #include "Mcu1_Device.h" #include "SCI.h" #include "stdio.h" #include "stdlib.h" #include "string.h" UNS8 receivedData[4] = { 0 }; UNS16 rx_loop = 0; void main() { /* Initialize system */ InitSysCtrl(); EALLOW; SysCtrlRegs.HISPCP.all = 0x3; EDIS; DINT; //disabliling cpu interrupts /* Initialize the PIE control registers to their default state */ InitPieCtrl(); IER = 0x0000; IFR = 0x0000; /* Initialize the PIE vector table with pointers to the shell Interrupt Service Routines (ISR). */ InitPieVectTable(); IER |= M_INT1; // here Enabling CPU INT9 EINT; //disable // // Enabling interrupt ERTM; for(rx_loop=0;rx_loop<=4;rx_loop++) { Sci_rx(); ScibRegs.SCIFFRX.bit.RXFIFORESET = 0; Sci_tx(); } } void Sci_Config() { EALLOW; SysCtrlRegs.PCLKCR0.bit.SCIBENCLK = 1; // enabiling peripheral clock EDIS; EALLOW; GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; EDIS; ScibRegs.SCICCR.all = 0x0007; // sci control reg are set as 8-bit data, no parity, 1 stop bit //0000 0000 0000 0111 ScibRegs.SCICTL1.all = 0x0063; // Enabling TX and RX reset ScibRegs.SCICTL2.all = 0x0000; ScibRegs.SCIHBAUD = 0x0000; // Setting the baud rate (high register) ScibRegs.SCILBAUD = 0x0079; //Setting baud rate (low register) 38.46kHz ScibRegs.SCIFFTX.all = 0x0000; ScibRegs.SCIFFRX.all = 0x0000; ScibRegs.SCIFFTX.all = 0xE044; //Try E044 ScibRegs.SCIFFRX.all = 0x0064; //Try 0064 //to check fifo status change 4 to 10 ScibRegs.SCIFFCT.all = 0x0000; ScibRegs.SCIPRI.bit.FREE = 1; /* Configure SCI Priority register for SOFT bit */ ScibRegs.SCIPRI.bit.SOFT = 1; EALLOW; GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // Asynchronous input (SCIRXDA) GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2; //config gpio as SCITXDA Same in 28069 GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2; //config gpioas SCIRXDA EDIS; //Peripheral intialization PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block PieCtrlRegs.PIEIER9.bit.INTx3 = 1; // here Enabling SCI RX interrupt in PIE group 9 PieCtrlRegs.PIEIER9.bit.INTx4 = 1; // here Enabling SCI TX interrupt in PIE group 9 EDIS; } BOOL Sci_rx() { UNS16 Rx_sts; UNS16 Rx_rdy = 0x0040; do { Rx_sts = ScibRegs.SCIRXST.all; } while ((Rx_sts & Rx_rdy) == 0); receivedData[rx_loop] = ScibRegs.SCIRXEMU; ScibRegs.SCIFFRX.bit.RXFIFORESET = 1; printf("rx :0x%x\n",receivedData[rx_loop]); } BOOL Sci_tx() { while (ScibRegs.SCICTL2.bit.TXRDY == 0); { ScibRegs.SCITXBUF = receivedData[rx_loop]; printf("tx : 0x%X\n", ScibRegs.SCITXBUF); } }
谢谢、此致、
Chaya