Other Parts Discussed in Thread: TMS570LS0432
您好!
我使用的是 TMS570LS0432。 我希望 SCI 在中断模式下通信、但尚未成功。它在轮询模式下工作良好。 是否有任何示例代码和处理器可用于 sci 中断模式。
如果是、请向我们提供。正在等待您的肯定答复。
提前感谢...
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.
Other Parts Discussed in Thread: TMS570LS0432
您好!
我使用的是 TMS570LS0432。 我希望 SCI 在中断模式下通信、但尚未成功。它在轮询模式下工作良好。 是否有任何示例代码和处理器可用于 sci 中断模式。
如果是、请向我们提供。正在等待您的肯定答复。
提前感谢...
您好!
1.在 HALCoGen 中的 SCI 全局启用 SCI TX 和 RX INT
2.启用 VIM 通道0-31下的 SCI 中断(通道13和通道27)
3.检查 VIM RAM 以确保为通道13和通道27分配了正确的 ISR:线性高电平中断和线性低电平中断
4.生成代码、并将 HALCoGen 导入 CCS 项目
5.在您的 main()中启用 IRQ 中断:_enable_IRQ ();
6.初始化 SCI:sicInit(),并通过 SCI 发送 TX/RX 数据
7.在 TeraTerm 终端中键入字符时应获得 INT
8. ISR 位于 sci.c 中
您好!
我已经完成了多达6个步骤、并且.I 希望从微控制器侧持续传输数据。 执行此操作后、我编写了以下代码来发送和接收数据。我在 TeraTerm 终端不断接收数据、但从 TeraTerm 传输时、我在微控制器 side.please 上未接收到有效数据。建议 在以下代码中写入数据时出错。
int main (空)
{
_enable_IRQ ();
sciInit();
memset (Tx_buff、0、sizeof (Tx_buff));
sprintf (Tx_buff、"\r\n 速度_EST_RPM:%d\0"、speed_est_rpm);
sciSend (scilinREG、sizeof (Tx_buff)、(uint8*) Tx_buff);
sciReceive (scilinREG、1、ReceivedChar);
while (1);
}
void sciNotification (sciBASE-t * sci、uint32标志)
{
memset (Tx_buff、0、sizeof (Tx_buff));
sprintf (Tx_buff、"\r\n 速度_EST_RPM:%d\0"、speed_est_rpm);
sciSend (scilinREG、sizeof (Tx_buff)、(uint8*) Tx_buff);
sciReceive (scilinREG、1、ReceivedChar[0]);
}
感谢你的答复。
如果我禁用 TX INT 并在 sci 通知中注释 scisend(),则只要键入 terminal,我就能够将数据仅传输一次到终端,并在控制器上接收数据。但是我希望连续地将数据传输到终端,并且仅在键入时才在控制器侧接收数据 终端。那么、如何执行此操作。
对于连续传输、我启用 了100ms 的 RTI 中断、并且每隔1秒我就将数据传输 到终端、传输的数据只不过是从终端接收到的数据。
这是我的代码
int main (空)
{
_enable_IRQ ();
sciInit();
rtiinit();
rtiStartCounter (rtiCOUNTER_BLOCK0);
sciReceive (scilinREG、1、ReceivedChar[0]);
while (1)
{
if (count = 10)
{
memset (Tx_buff、0、sizeof (Tx_buff));
sprintf (Tx_buff、"\r\nSpeed_EST_RPM:%d\0"、ReceivedChar[0]);
sciSend (scilinREG、strlen (Tx_buff)、(uint8*) Tx_buff);
gioToggleBit (gioPORTA、 1);
计数= 0;
}
}
}
/******* 主代码结束 /
void sciNotification (sciBASE-t * sci、uint32标志)
{
sciReceive (scilinREG、1、ReceivedChar[0]);
}
void rtiNotification (uint32_t 通知)
{
if (notification=rtiNOTIFICATION_COMPARE0)
{
count++;
}
}
之后每次我在终端中键入内容时、 都会在微控制器中正确接收数据、但之后会显示垃圾数据、直到我从终端发送字节。
代码中的任何错误。
正在等待您的回复。
你(们)好
请在启动 RTI 之前启用 RTI 中断:
_enable_IRQ ();
rtiInit();
rtiEnableNotification (rtiNOTIFICATION_COMPARE0);
rtiStartCounter (rtiCOUNTER_BLOCK0);
sciReceive (scilinREG、1、ReceivedChar[0]);
while (1)
{...}