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





