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.

[参考译文] CCS/TMS320F28377S:C2000

Guru**** 2042920 points
Other Parts Discussed in Thread: TMS320F28377S
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/665136/ccs-tms320f28377s-c2000

器件型号:TMS320F28377S

工具/软件: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;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yuvaraj、您好!

    您正在尝试从代码中将 GPIO 42和43配置为 SCiTXDA 和 SCIRXDA。
    但 GPIO 多路复用配置不正确。
    GPIO_SetupPinMux() API 的第三个参数用于多路复用器选项。

    如果您看到器件的数据表,则 SCIA TX 和 Rx 的多路复用器位置为15,而不是1。
    www.ti.com/.../sprs881d.pdf


    更改:
    GPIO_SetupPinMux (42、GPIO_MUX_CPU1、1);&
    GPIO_SetupPinMux (43、GPIO_MUX_CPU1、1);

    更改为

    GPIO_SetupPinMux (42、GPIO_MUX_CPU1、0xF);&
    GPIO_SetupPinMux (43、GPIO_MUX_CPU1、0xF);

    您应该能够看到数据显示在线路上。

    此致。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    YUVA、

    请参阅 Meghana 的回答。

    您使用的是 F2837x 的哪个平台? 您使用的是 controlCARD 还是 Launchpad?

    如果您使用板载 FTDI 芯片进行 UART/SCI 串行通信、则请确保您使用并配置正确的 GPIO 引脚进行 SCI 通信、这些引脚会路由到 FTDI 芯片。

    此致、
    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用 Launch Pad (已提及)