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.
//##########################################################################出################################出
//
//文件:sci_ex3_echoback.c
//
//标题:SCI 回送示例。
//
//! \addtogroup driver_example_list
//!
//
//包含的文件
//
#include "driverlib.h"
#include "device.h"
//
//定义
//
//定义自动波特以使用自动波特锁定功能
//#define autobaud (定义自动波特)
//
//全局变量
//
uint16_t loopCounter = 0;
uint16_t receivedChar;
uint16_t rxStatus = 0u;
//
//主菜单
//
__interrupt void sciaRXFIFOISR (void);
空 main (void)
{
unsigned char * msg;
//
//配置 PLL,禁用 WD,启用外设时钟。
//
device_init();
//
//禁用引脚锁定并启用内部上拉。
//
device_initGPIO();
//
// GPIO28是 SCI Rx 引脚。
//
GPIO_setPinConfig (DEVICE_GPIO_CFG_SCIRXDA);
GPIO_setDirection 模式(DEVICE_GPIO_PIN_SCIRXDA、GPIO_DIR_MODE_IN);
GPIO_setPadConfig (DEVICE_GPIO_PIN_SCIRXDA、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (DEVICE_GPIO_PIN_SCIRXDA、GPIO_QUAL_ASYNC);
//
// GPIO29是 SCI Tx 引脚。
//
GPIO_setPinConfig (DEVICE_GPIO_CFG_SCITXDA);
GPIO_setDirection 模式(DEVICE_GPIO_PIN_SCITXDA、GPIO_DIR_MODE_OUT);
GPIO_setPadConfig (DEVICE_GPIO_PIN_SCITXDA、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (DEVICE_GPIO_PIN_SCITXDA、GPIO_QUAL_ASYNC);
//
//初始化中断控制器和矢量表。
//
interrupt_initModule();
interrupt_initVectorTable();
//
//初始化 SCIA 及其 FIFO。
//
SCI_performSoftwareReset (SCIA_BASE);
//
//为回显配置 SCIA。
//
SCI_setConfig (SCIA_BASE、DEVICE_LSPCLK_FREQ、9600、(SCI_CONFIG_WLEN_8 |
SCI_CONFIG_STOP_ONE |
SCI_CONFIG_PAR_NONE);
SCI_resetChannels (SCIA_BASE);
SCI_resetRxFIFO (SCIA_BASE);
SCI_resetTxFIFO (SCIA_BASE);
SCI_clearInterruptStatus (SCIA_BASE、SCI_INT_TXFF | SCI_INT_RXFF);
SCI_enableFIFO (SCIA_BASE);
SCI_enableModule (SCIA_BASE);
SCI_performSoftwareReset (SCIA_BASE);
#ifdef 自动波特
//
//执行自动波特锁定。
// SCI 希望使用'A'或'A'来锁定波特率。
//
SCI_lockAutobaud (SCIA_BASE);
#endif
//CPUTimer_startTimer (myCPUTIMER0_BASE);
//
//发送启动消息。
//
MSG ="\r\n\n\nHello World!\0";
SCI_writeCharArray (SCIA_BASE、(uint16_t*) msg、17);
MSG ="\r\n 您将输入一个字符、DSP 将回显它!\n\n";
SCI_writeCharArray (SCIA_BASE、(uint16_t*) msg、62);
for (;;)
{
MSG ="\r\n 输入字符:\0";
SCI_writeCharArray (SCIA_BASE、(uint16_t*) msg、22);
//
//从 FIFO 中读取一个字符。
//
receivedChar = SCI_readCharBlockingFIFO (SCIA_BASE);
SCI_writeCharBlockingFIFO (SCIA_BASE、receivedChar);
rxStatus = SCI_getRxStatus (SCIA_BASE);
if (((rxStatus 和 SCI_RXSTATUS_ERROR)!= 0)
{
//
//如果执行在这里停止,有一些错误
//分析 SCI_getRxStatus () API 返回值
//
ESTOP0;
}
//回显字符。
//
MSG ="您已发送:\0";
SCI_writeCharArray (SCIA_BASE、(uint16_t*) msg、13);
SCI_writeCharBlockingFIFO (SCIA_BASE、receivedChar);
//
//递增循环计数变量。
//
DEVICE_DELAY_US (20000);
循环计数器++;
}
}
__interrupt void sciaRXFIFOISR (void)
{
//
//从 FIFO 中读取一个字符。
//
receivedChar = SCI_readCharBlockingFIFO (SCIA_BASE);
rxStatus = SCI_getRxStatus (SCIA_BASE);
if (((rxStatus 和 SCI_RXSTATUS_ERROR)!= 0)
{
//
//如果执行在这里停止,有一些错误
//分析 SCI_getRxStatus () API 返回值
//
ESTOP0;
}
//
//回显字符。
//
SCI_writeCharBlockingFIFO (SCIA_BASE、receivedChar);
SCI_clearOverflowStatus (SCIA_BASE);
//
SCI_clearInterruptStatus (SCIA_BASE、SCI_INT_RXFF);
//
//发出 PIE 回路
//
INTERRUPT_clearACKGROUP (INTERRUPT_ACK_group9);
}
//
//文件结束
//
上面的代码在这里停止
//如果执行在这里停止,有一些错误
//分析 SCI_getRxStatus () API 返回值
有人能帮助我解决这个问题吗?
尊敬的 Varun:
感谢您联系 E2E 论坛!
您能否查看变量 rxStatus 以了解它包含的值? 基于、您可以参考寄存器 SCIRXST 以了解该错误对应的更多详细信息。
在此之前、您是否按照初始说明中所述进行硬件连接?
谢谢。
阿迪亚
您好!
您能否分享您在终端建立的硬件连接? 此外、请求也共享 rxStatus 变量值以进行错误识别。
谢谢。
阿迪亚
您好
我已将 GPIO35分配为 scia Rx、将 GPIO 37分配为 scia TX
rxStatus 变量值 为176
谢谢
瓦伦克尔
您好
#define DEVICE_GPIO_PIN_SCIRXDA 35u // SCI RX 的 GPIO 编号
#define DEVICE_GPIO_PIN_SCITXDA 37U // SCI TX 的 GPIO 编号
#define DEVICE_GPIO_CFG_SCIRXDA GPIO_35_SCIA_RX // SCI RX 的"pinConfig"
#define DEVICE_GPIO_CFG_SCITXDA GPIO_37_SCIA_TX // SCI TX 的"pinConfig"
引脚配置
谢谢
瓦伦
您是否能够使用 GPIO 28-29测试功能? 您能否检查引导模式选择开关的配置?
此外、如何在 GPIO 35和 GPIO 37之间建立外部连接?
阿迪亚
IM 使用 TMS320F280039C 子板时未启动焊盘、我可以将 gpio28-29配置为 Rx TX
谢谢!
我也更改了引脚、但结果相同
您能否描述一下在 controlCARD 集线站上建立的硬件连接? 您是否使用 DB9连接器与 PC 通信?
阿迪亚
IM 使用 RS232通信、im 使用终端软件查看输出、im 使用 DB9连接器、im 使用 TTL 到 RS232转换器
您能否尝试更改硬件连接电缆? C2000Ware 中提供的软件示例经过验证并可正常工作、因此在硬件方面需要修复一些问题。
阿迪亚
您好
我移除了硬件连接、但代码仅在那里停止
谢谢!
瓦伦吉隆坡
是的、如果移除了硬件连接、Rx 在引脚上看不到任何内容。 预计会停止。 我的请求是尝试另一个 DB9连接器/硬件并使用可用的软件示例验证硬件。
阿迪亚