Other Parts Discussed in Thread: TMS320F28388D, SYSCONFIG, TMDSCNCD28388D
器件型号: TMS320F28388D
主题中讨论的其他器件: SysConfig、 TMDSCNCD28388D
您好:
我正在处理 TMS320F28388D 控制器。
在 CCS 中、我导入了双核示例“sci_ex1_sysconfig_multi"</s>“
我使用 DCAL 板 TMDSCNCD28388D、它在 20Mhz 上运行。
我已在 device.h 文件中添加了宏#define USE_20MHz_XTAL。
“sci_ex1_sysconfig_cpu1.c"和“和“sci_ex1_sysconfig_CPU2.c"两“两个工程都成功构建。
在下面、我将共享 sci_ex1_sysconfig_cpu1.c 和 sci_ex1_sysconfig_CPU2.c 文件以供您参考。
1) sci_ex1_sysconfig_cpu1.c
#include “driverlib.h"</s>“
#include “device.h"</s>“
#include “inc/hw_ipc.h"</s>“
#include “board.h"</s>“
//
//定义
//
//定义自动波特率以使用自动波特率锁定功能
//#定义自动波特率
//
//主要
//
void main (void)
{
//
//配置 PLL、禁用 WD、启用外设时钟。
//
设备初始化 ();
//
//禁用引脚锁定并启用内部上拉电阻。
//
device_initGPIO();
EALLOW;
// 1。 使用 DriverLib 手动启用 SCI-A 时钟
SysCtl_selectCPUForPeripheral (SysCtl_CPUSEL5_SCI、1、SysCtl_CPUSEL_CPU2);
EDIS;
//
//将 SCIA 模块访问权限移交给 CPU2
//
//SysCtl_selectCPUForPeripheral (SYSCTL_CPUSEL5_SCI、1、SYSCTL_CPUSEL_CPU2);
BOARD_INIT ();
//
//独立模式和闪存模式的配置
//
#ifdef _standalone
//
//发送引导命令以允许 CPU2 应用程序开始执行
//
DEVICE_BOOTCPU2 (BOOT_MODE_CPU2);
#endif //_standalone
//
// SCI Rx 引脚的配置。
//
GPIO_setPinConfig (DEVICE_GPIO_CFG_SCIRXDA);
//
// SCI Tx 引脚的配置。
//
GPIO_setPinConfig (DEVICE_GPIO_CFG_SCITXDA);
//
//同步 CPU1 和 CPU2。 将 IPC 标志 17 发送到 CPU2。
//
IPC_SYNC (IPC_CPU1_L_CPU2_R、SYNC_FLAG);
//
//初始化中断控制器和矢量表。
//
interrupt_initModule();
Interrupt_initVectorTable();
}
2) sci_ex1_sysconfig_CPU2.c
#include “driverlib.h"</s>“
#include “device.h"</s>“
#include “inc/hw_ipc.h"</s>“
#include “board.h"</s>“
//
//定义
//
//定义自动波特率以使用自动波特率锁定功能
//#定义自动波特率
//
//全局
//
uint16_t 循环计数器= 0;
//
//主要
//
void main (void)
{
uint16_t receivedChar;
无符号字符*msg;
uint16_t rxStatus = 0U;
//uint16_t ipcFlag17 = 17u;
//
//配置 PLL、禁用 WD、启用外设时钟。
//
设备初始化 ();
//
//初始化中断控制器和矢量表。
//
interrupt_initModule();
Interrupt_initVectorTable();
//
//等待 CPU01 就绪并设置 IPC 标志 17
//
IPC_SYNC (IPC_CPU2_L_CPU1_R、SYNC_FLAG);
//
//从 sysconfig 初始化设置
//
BOARD_INIT ();
SCI_enableLoopback (SCIA_BASE);
#ifdef 自动波特率
//
//执行自动波特率锁定。
// SCI 希望用“A"或“或“A"来“来锁定波特率。
//
SCI_lockAutobaud (SCIA_BASE);
#endif
//
//发送启动消息。
//
MSG =“\r\n\n\nHello World!\0“;
SCI_writeCharArray (SCIA_BASE、(uint16_t*) msg、17);
MSG =“\r\n 您将输入一个字符、DSP 将回显它!\n\0“;
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);
rxStatus = SCI_getRxStatus (SCIA_BASE);
if ((rxStatus & SCI_RXSTATUS_ERROR)!= 0)
{
//
//如果执行停止在这里有一些错误
//analyze SCI_getRxStatus() API 返回值
//
ESTOP0;
}
//
//回显字符。
//
MSG =“ 您发送的:\0“;
SCI_writeCharArray (SCIA_BASE、(uint16_t*) msg、13);
SCI_writeCharBlockingFIFO (SCIA_BASE、receivedChar);
//
//递增循环计数变量。
//
循环计数器++;
}
}
在波特率为 9600 的 PuTTY 上、我无法看到字符串 Hello World!。
另外、当我输入一个字符时、DSP 不会回显它!
你能检查一下,告诉我,我在做什么错?

