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.

[参考译文] TMS320F28335:SCI 回送示例不工作。 请帮助

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1169141/tms320f28335-sci-echoback-example-not-working-please-help

主题中讨论的其他器件:TMS320F28335C2000WARETMDSCNCD28335

부품 번호:TMS320F28335

//
//包含的文件
//
#include "DSP28x_Project.h"//器件头文件和示例 include 文件

//
//函数原型
//
void scib_echoback_init (void);
void scib_fifo_init (void);
void scib_xmit (int data);
void scib_msg (char * msg);

//
//全局
//
uint16环计数;
UINT16错误计数;

//
//主函
//
void main (void)

uint16 ReceivedChar;
char *msg;

//
//步骤1. 初始化系统控制:
// PLL、安全装置、启用外设时钟
//此示例函数位于 DSP2833x_SYSCTRL.c 文件中。
//
InitSysCtrl();

//
//步骤2. 初始化 GPIO:
//此示例函数位于 DSP2833x_GPIO.c 文件和中
//说明了如何将 GPIO 设置为其默认状态。
//
// InitGpio();//针对此示例跳过

//
//对于这个示例、只初始化针对 SCI-B 端口的引脚。
//
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0;//为 GPIO14启用上拉(SCITXDB)
GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0;//为 GPIO15启用上拉(SCIRXDB)

GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3;//异步输入 GPIO15 (SCIRXDB)

GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 2;//将 GPIO14配置为 SCITXDB
GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 2;//为 SCIRXDB 配置 GPIO15
EDIS;

//
//步骤3. 清除所有中断并初始化 PIE 矢量表:
//禁用 CPU 中断
//
Dint;

//
//将 PIE 控制寄存器初始化为默认状态。
//默认状态为禁用所有 PIE 中断和标志
//被清除。
//此函数位于 DSP2833x_PIECTRL.c 文件中。
//
InitPieCtrl();

//
//禁用 CPU 中断并清除所有 CPU 中断标志
//
IER = 0x0000;
IFR = 0x0000;

//
//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
//这将填充整个表,即使是中断也是如此
//在本例中未使用。 这对于调试很有用。
//可以在 DSP2833x_DefaultIsr.c 中找到 shell ISR 例程
//此函数可在 DSP2833x_PieVect.c 中找到
//
InitPieVectTable();

//
//步骤4. 初始化所有器件外设:
//此函数位于 DSP2833x_InitPeripherals.c 中
//
// InitPeripherals ();//此示例不需要

//
//步骤5. 特定于用户的代码
//
LoopCount = 0;
错误计数= 0;

scib_fifo_init();//初始化 SCI FIFO
scib_echoback_init ();//初始化用于 echoback 的 SCI

MSG ="\r\n\n\nHello World!\0";
scib_msg (msg);

MSG ="\r\n 您将输入一个字符,DSP 将回显它! \n\n";
scib_msg (msg);

for (;;)

MSG ="\r\n 输入字符:\0";
scib_msg (msg);

//
//等待 inc 字符
//
while (ScibRegs.SCIFFRX.bit.RXFFST!= 1)

//
//等待 XRDY =1为空状态
//

//
//获取字符
//
ReceivedChar = ScibRegs.SCIRXBUF.ALL;

//
//回显字符
//
MSG ="您已发送:\0";
scib_msg (msg);
scib_xmit (ReceivedChar);

LoopCount++;

//
// scib_echoback_init -测试1、SCI-B、DLB、8位字、波特率9600bps、
//默认,1个停止位,无奇偶校验
//
void scib_echoback_init ()

//
//注意:SCI-B 外设的时钟被打开
//在 InitSysCtrl()函数中
//

// 1个停止位,无回送,无奇偶校验,8个字符位,
//异步模式,空闲线协议
//
SCICCR.ALL = 0x0007;

//
//启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、睡眠、TXWAKE
//
SCICTL1.ALL = 0x0003;
ScibRegs.SCICTL2.all = 0x0003;
ScibRegs.SCICTL2.bit.TXINTENA=0;
ScibRegs.SCICTL2.bit.RXBKINTENA=0;
#IF (CPU_FRQ_150MHz)
ScibRegs.SCIHBAUD = 0x0001;// 9600 baud @LSPCLK = 37.5MHz。
ScibRegs.SCILBAUD = 0x00E7;
#endif
#IF (CPU_FRQ_100MHz)
ScibRegs.SCIHBAUD = 0x0001;// 9600 baud @LSPCLK = 20MHz。
ScibRegs.SCILBAUD = 0x0044;
#endif
ScibRegs.SCICTL1.ALL = 0x0023;//从复位中撤回 SCI

//
// scib_xmit -从 SCI 发送一个字符
//
空 scib_xmit (int 数据)

while (ScibRegs.SCIFFTX.bit.TXFFST!= 0)

asm (" NOP");

ScibRegs.SCITXBUF =数据;

//
// scib_msg
//
void scib_msg (char * msg)

int i;
I = 0;
while (msg[i]!='\0')

scib_xmit (msg[i]);
i++;

//
// scib_fifo_init -初始化 SCI FIFO
//
void scib_fifo_init()

SCIFFTX.ALL = 0xE040;
ScibRegs.SCIFFRX.ALL = 0x204f;
ScibRegs.SCIFFCT.all = 0x0;

//
//文件结束
//

它的工作方式应如下:

但终端窗口中没有显示任何内容。

下图是我编写的示例代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="543317" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1169141/tms320f28335-sci-echoback-example-not-working-please-help ]I ++;[/quot]

    我看到您写了大写"i -空格键-++"。 我不确定编译器如何处理格式。 您能否尝试将其改回正常的"i++"

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

    변경했지만 작동하지 않습니다 μ A。

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

    您能否在代码中放置断点并查看代码在何处停止?

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

    代码是不间断的、运行时没有问题。 但终端窗口中没有显示任何内容。

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

    您能确认更多事项吗?

    -终端配置与示例规格相匹配- BR 9600等?

    -您能否检查 TX 缓冲区是否已填满所需的数据?

    -从 GPIO14到 GPIO15 (TX 到 RX)的硬件连接是否正确?

    -在 InitSysCtrl 函数中正确设置时钟配置?

    谢谢、

    Aditya

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

    我不确定要连接到套件中的哪个引脚。 请告诉我如何连接它吗?

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

    您可以在此处找到所用电路板的原理图:

    引脚信息可从原理图中找到。