This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
大家好、
我将 TMS320F28377S C2000控制器用于我的应用。
我希望通过 UART 通信与外部器件进行控制器通信、为此、我最初希望熟悉此控制器的 UART 通信。
我尝试了控制套件的示例代码、但我认为它不起作用。 我粘贴了下面的代码。
在该回路模式下工作正常、但 SCIA-TX 和 RX 引脚中没有数据(42、43)。 我在 Lanuchpad 工作
此致、
Yuvaraj
//
//包含的文件
//
#include "F28x_Project.h"
//
//定义
//
#define CPU_FREQ 60E6
#define LSPCLK_FREQ CPU_FREQ/4
#define SCI_FREQ 100E3
#define SCI_PRD (LSPCLK_FREQ/(SCI_FREQ*8))-1
//
//全局
//
uint16 sdataA[2];//为 SCI-A 发送数据
uint16 rdataA[2];//针对 SCI-A 接收到的数据
uint16 RDATA_pointA;//用于检查接收到的数据
uint16 a、j;
//
//函数原型
//
中断空 sciaTxFifoIsr (void);
中断空 sciaRxFifoIsr (void);
void scia_fifo_init (void);
void 错误(void);
//
//主函
//
void main (void)
{
uint16 i;
InitSysCtrl();
InitGpio();
GPIO_SetupPinMux (13、GPIO_MUX_CPU1、0);
GPIO_SetupPinOptions (13、GPIO_OUTPUT、GPIO_PushPull);
GPIO_SetupPinMux (12、GPIO_MUX_CPU1、0);
GPIO_SetupPinOptions (12、GPIO_OUTPUT、GPIO_PushPull);
GPIO_SetupPinMux (42、GPIO_MUX_CPU1、1);
GPIO_SetupPinOptions (42、GPIO_INPUT、GPIO_异 步);
GPIO_SetupPinMux (43、GPIO_MUX_CPU1、1);
GPIO_SetupPinOptions (43、GPIO_OUTPUT、GPIO_异 步);
Dint;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;//这是写入 EALLOW 受保护寄存器所必需的
PieVectTable.SCIA_RX_INT =&sciaRxFifoIsr;
PieVectTable.SCIA_TX_INT =&sciaTxFifoIsr;
EDIS;//这是禁止写入 EALLOW 受保护寄存器所必需的
scia_fifo_init ();//初始化 SCI-A
对于(i = 0;i<2;i++)
{
sdataA[i]= i;
}
RDATA_pointA = sdataA[0];
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;//启用 PIE 块
PieCtrlRegs.PIEIER9.bit.INTx1 = 1;// PIE 组9,INT1
PieCtrlRegs.PIEIER9.bit.INTx2 = 1;// PIE 组9、int2
IER = 0x100;//启用 CPU INT
EINT;
for (;;)
{
//打开 LED
GPIO_WritePin (13、0);
GPIO_WritePin (12、1);
对于(j = 0;j < 10000;j++)
{
对于(A = 0;A < 100;A++)
{
}
}
//关闭 LED
GPIO_WritePin (13、1);
GPIO_WritePin (12、0);
对于(j = 0;j < 10000;j++)
{
对于(A = 0;A < 100;A++)
{
}
}
//延迟一位。
}
}
//错误-错误时停止调试器的函数
空错误(空)
{
asm (" ESTOP0");//测试失败!! 停下来!
适用于(;);
}
// sciaTxFifoIsr - SCIA 发送 FIFO ISR
中断空 sciaTxFifoIsr (空)
{
uint16 i;
for (i=0;i< 2;i++)
{
SciaRegs.SCITXBUF.All=sdataA[i];//发送数据
}
for (i=0;i< 2;i++)//递增发送下一个周期的数据
{
sdataA[i]=(sdataA[i]+1)和0x00FF;
}
SciaRegs.SCIFFTX.bit.TXFFINTCLR=1;//清除 SCI 中断标志
PieCtrlRegs.PIEACX.All|=0x100;//发出 PIE ACK
}
// sciaRxFifoIsr - SCIA 接收 FIFO ISR
中断空 sciaRxFifoIsr (空)
{
uint16 i;
for (i=0;i<2;i++)
{
rdataA[i]=SciaRegs.SCIRXBUF.all;//读取数据
}
for (i=0;i<2;i++)//检查接收到的数据
{
if (rdataA[i]!=(RDATA_pointA+I)& 0x00FF)
{
// error();
}
}
RDATA_pointA =(RDATA_pointA+1)和0x00FF;
SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1;//清除溢出标志
SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;//清除中断标志
PieCtrlRegs.PIEACX.All|=0x100;//发出 PIE ACK
}
// scia_fifo_init -配置 SCIA FIFO
void scia_fifo_init()
{
SciaRegs.SCICCR.all = 0x0007;// 1停止位,无回路
//无奇偶校验,8个字符位,
//异步模式,空闲线协议
SciaRegs.SCICTL1.all = 0x0003;//启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、睡眠、TXWAKE
SciaRegs.SCICTL2.bit.TXINTENA=1;
SciaRegs.SCICTL2.bit.RXBKINTENA=1;
SciaRegs.SCIHBAUD.ALL = 0x0000;
SciaRegs.SCILBAUD.ALL = SCI_PRD;
SciaRegs.SCICCR.bit.LOOPBKENA=0;//启用回路
SciaRegs.SCIFFTX.ALL = 0xC022;
SciaRegs.SCIFFRX.ALL = 0x0022;
SciaRegs.SCIFFCT.all = 0x00;
SciaRegs.SCICTL1.all = 0x0023;//从复位中撤回 SCI
SciaRegs.SCIFFTX.bit.TXFIFORESET = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
}