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
你(们)好。
上次我在这个论坛上提出问题时,我认为我的计划进展顺利。 但是 、它不是。 我尝试通过 SCI-A 将 Arduino Uno 中的数据发送到 TI 我希望 TI 的串行监视器(我正在使用 PuTTY)能够显示 Arduino 数据。 如果我使用默认程序,特别是此部分:
无效
scia_msg (char * msg)
{
int i;
I = 0;
while (msg[i]!='\0')
{
scia_xmit (msg[i]);
i++;
}
}
PuTTY 可以显示主消息(Hello World 等),但我从 Arduino 发送的数据未完全发送。 例如,如果我发送“123456”,则 PuTTY 仅显示:
您将输入一个字符、DSP 将回显它!
输入字符:
但是, 如果我像这样更改程序:
无效
scia_msg (char * msg)
{
int i;
I = 0;
while (msg[i]='#') //因为我在 Arduino 程序中使用'#'进行 ENTER 操作
{
scia_xmit (msg[i]);
i++;
}
}
TI 的串行监视器(PuTTY)可以显示我从 Arduino 发送的数据。 但是、PuTTY 上不会显示 CCS 程序的主消息(Hello World 等)。
重点是、我想显示主消息(Hello World 等)以及我 从 Arduino (键盘)发送的数据。
这里是我的 CCS 代码(我使用的是 sci_echoback 示例代码):
//######################################################################################################################
//
//文件:example_2806xScia_Echoback.c
//
//标题:SCI 回波示例
//
//! addtogroup f2806x_example_list
//!
//
//包含的文件
//
#include "DSP28x_Project.h"//器件头文件和示例 include 文件
//
//函数原型
//
void scia_echoback_init (void);
void scia_fifo_init (void);
void scia_xmit (int a);
void scia_msg (char * msg);
//
//全局
//
uint16环计数;
UINT16错误计数;
uint16 ReceivedChar;
//
//主函
//
void main (void)
{
char *msg;
//
//步骤1. 初始化系统控制:
// PLL、安全装置、启用外设时钟
//此示例函数位于 F2806x_SYSCTRL.c 文件中。
//
InitSysCtrl();
//
//步骤2. 初始化 GPIO:
//此示例函数位于 F2806x_GPIO.c 文件和中
//说明了如何将 GPIO 设置为其默认状态。
//
//InitGpio();针对此示例跳过
//
//对于这个示例、只初始化针对 SCI-A 端口的引脚。
//此函数位于 F2806x_Sci.c 文件中。
//
InitSciaGpio();
//
//步骤3. 清除所有中断并初始化 PIE 矢量表:
//禁用 CPU 中断
//
Dint;
//
//将 PIE 控制寄存器初始化为默认状态。
//默认状态为禁用所有 PIE 中断和标志
//被清除。
//此函数位于 F2806x_PIECTRL.c 文件中。
//
InitPieCtrl();
//
//禁用 CPU 中断并清除所有 CPU 中断标志
//
IER = 0x0000;
IFR = 0x0000;
//
//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
//这将填充整个表,即使是中断也是如此
//在本例中未使用。 这对于调试很有用。
//可以在 F2806x_DefaultIsr.c 中找到 shell ISR 例程
//此函数可在 F2806x_PieVect.c 中找到
//
InitPieVectTable();
//
//步骤4. 初始化所有器件外设:
//此函数可在 F2806x_InitPeripherals.c 中找到
//
//InitPeripheral();//本示例不需要
//
//步骤5. 特定于用户的代码
//
LoopCount = 0;
错误计数= 0;
scia_fifo_init();//初始化 SCI FIFO
scia_echoback_init();//初始化用于 echoback 的 SCI
MSG ="\r\n\n\nHello World!\0";
scia_msg (msg);
MSG ="\r\n 您将输入一个字符,DSP 将回显它! \n\n";
scia_msg (msg);
for (;;)
{
MSG ="\r\n 输入字符:\0";
scia_msg (msg);
//
//等待 inc 字符
//
while (SciaRegs.SCIFFRX.bit.RXFFST < 1)
{
//
//等待 XRDY =1为空状态
//
}
//
//获取字符
//
ReceivedChar = SciaRegs.SCIRXBUF.ALL;
//
//回显字符
//
MSG ="数据 A":\0";
scia_msg (msg);
scia_xmit (ReceivedChar);
LoopCount++;
}
}
//
// scia_echoback_init -测试1、SCIA DLB、8位字、波特率0x0103、
//默认,1个停止位,无奇偶校验
//
无效
scia_echoback_init ()
{
//
//注意:SCIA 外设的时钟被打开
//在 InitSysCtrl()函数中
//
//
// 1停止位,无回送,无奇偶校验,8个字符位,异步模式,
//空闲线协议
//
SciaRegs.SCICCR.all =0x0007;
//
//启用 TX、RX、内部 SCICLK、禁用 RX ERR、睡眠、 TXWAKE
//
SciaRegs.SCICTL1.all =0x0003;
SciaRegs.SCICTL2.bit.TXINTENA=1;
SciaRegs.SCICTL2.bit.RXBKINTENA=1;
//
// 9600波特@LSPCLK = 22.5MHz (90MHz SYSCLK)
//
SciaRegs.SCIHBAUD = 0x0001;
SciaRegs.SCILBAUD = 0x0024;
SciaRegs.SCICTL1.all =0x0023;//从复位中撤回 SCI
}
//
// scia_xmit -从 SCI 发送一个字符
//
无效
scia_xmit (int a)
{
while (SciaRegs.SCIFFTX.bit.TXFFST > 0)
{
}
SciaRegs.SCITXBUF=A;
}
//
// scia_msg -
//
无效
scia_msg (char * msg)
{
int i;
I = 0;
while (msg[i]!='\0')
{
scia_xmit (msg[i]);
i++;
}
}
//
// scia_fifo_init -初始化 SCI FIFO
//
无效
scia_fifo_init()
{
SciaRegs.SCIFFTX.All=0xE040;
SciaRegs.SCIFFRX.All=0x2044;
SciaRegs.SCIFFCT.All=0x0;
}
无效
SCia_GPIO()
{
#if DSP28_SCIA
InitSciaGpio();
#endif // endif DSP28_SCIA
EALLOW;
/*为所选引脚启用内部上拉*/
//用户可以启用或禁用上拉。
//这将启用指定引脚的上拉电阻。
GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;//为 GPIO28启用上拉(SCIRXDA)
// GpioCtrlRegs.GPAPUD.bit.GPIO7=0;//启用 GPIO7的上拉(SCIRXDA)
GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0;//为 GPIO29启用上拉(SCITXDA)
// GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;//启用 GPIO12的上拉(SCITXDA)
/*将所选引脚的限定条件设置为仅异步*/
默认情况下、//输入与 SYSCLKOUT 同步。
//这将为所选引脚选择异步(无限定条件)。
GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3;//异步输入 GPIO28 (SCIRXDA)
// GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 3;//异步输入 GPIO7 (SCIRXDA)
/*使用 GPIO 寄存器配置 SCI-A 引脚*/
//这指定哪些可能的 GPIO 引脚将是 SCI 功能引脚。
GpioCtrlRegs.GPAMUX2.bit.GPIO28=1;//为 SCIRXDA 操作配置 GPIO28
// GpioCtrlRegs.GPAMUX1.bit.GPIO7=2;//为 SCIRXDA 操作配置 GPIO7
GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1;//为 SCITXDA 操作配置 GPIO29
// GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 2;//为 SCITXDA 操作配置 GPIO12
EDIS;
}
//#endif
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//不再需要。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//
//文件结束
//
有人、您知道我的问题吗?
Amir