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.

[参考译文] TMS570LC4357:SCI3中断驱动环回模式

Guru**** 2399305 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1315626/tms570lc4357-sci3-interrupt-driven-loopback-mode

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

我正在尝试设置 SCI3以便能够接收数据包(等待0x0A)、但我仅触发一个 sciNotification。

我阅读了论坛上其他线程的相关信息、并遵循了建议、但无法使我的代码正常运行。

有人能帮忙吗?

使用 HALCoGen、我已经完成了以下设置:

  • 启用的 SCI3驱动器
  • 启用 VIM 通道64:SCI3高电平
  • SCI3全局:
    • TX 中断  
    • RX 中断
  • SCI3数据格式
    • 波特率115200
    • 1个停止位
    • 8个数据位
    • 无奇偶校验使能
    • 无偶校验
  • SCI3端口
    • TX、RX 引脚处于功能模式

我的代码如下:

#包含

#include "HL_sys_common.h"

#include "HL_sys_core.h"

#include "HL_sci.h"


uint8 rx_idx;
uint8 rx_buf[32 ];
uint8 tx_buf[ 32 ];


int main (空)
{

UINT8通道;

memset (&rx_buf,0x00,sizeof (rx_buf);
Rx_idx = 0;

memset (&TX_buf、0xAA、sizeof (TX_buf)- 1);
tx_buf[ sizeof (tx_buf)- 1 ]= 0x0A;

sciInit();

_enable_interrupt_();

sciEnableNotification (sciREG3、SCI_RX_INT);
sciEnableLoopback ( sciREG3, Digital_Lbk );
sciReceive ( sciREG3, 1,( uint8 *)&ch );

sciSend ( sciREG3, 32,( uint8 *)&TX_buf[ 0 ]);

while (1);


返回0;


void sciNotification ( scibas_t *sci, uint32标志)
{


UINT8通道;

sciReceive ( sci, 1,( uint8 *)&ch );

如果( Ch == 0x0A )
{

Rx_idx = 0;


否则
{


/*将字符存储在相应的 SCI Rx 缓冲器和后增量数组索引中*/
rx_buf[ rx_idx ]= ch;
rx_idx++;




我已将 HALCoGen 项目:

e2e.ti.com/.../1768.SCI.zip

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

    您好、Jerry。

    我做了一些小的改变,你的项目,现在一切似乎都从侧面工作.

    以下是修改后的工程:

    e2e.ti.com/.../SCI_5F00_LoopBack_5F00_TEST_5F00_LC4357.zip

    两个发现从我的一方。

    1.第一个是您的通知码。

    void sciNotification ( scibas_t *sci, uint32标志)
    {


    UINT8通道;

    sciReceive ( sci, 1,( uint8 *)&ch );

    如果( Ch == 0x0A )
    {

    Rx_idx = 0;


    否则
    {


    /*将字符存储在相应的 SCI Rx 缓冲器和后增量数组索引中*/
    rx_buf[ rx_idx ]= ch;
    rx_idx++;


    [/报价]

    在此通知中、我们已经收到一个字符、如果不移动该字符、您将初始化以接收另一个字符。

    2.启用回送后,我们应该等到总线空闲后再传输任何数据。

    因此、请在我随附的项目中验证我对上述两项修改所做的更改。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    非常感谢、它运行得很好。

    此致、

    杰瑞