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.

[参考译文] TMS320F2.8055万:F2.8055万 SCI'问题

Guru**** 2327980 points
Other Parts Discussed in Thread: MOTORWARE, CONTROLSUITE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/575329/tms320f28055-f28055-sci-s-issues

部件号:TMS320F2.8055万
主题中讨论的其他部件:MOTORWAREcontrolSUITE

Brett,您好!

我在我的项目中使用F2.8055万作为通信控制器。 使用3个SCI端口。 我为这3个SCI端口设置相同的工作模式并设置回路测试。 SCIA工作正常,但SCIB和SCIC无法正常工作。 在我向TX缓冲区发送字节日期后,程序始终等待Rx数据就绪。 你能告诉我是什么造成了这种情况吗? CCS版本是6.1 .2。 测试代码来自 \ti\motorware_1_01_00_17\sw\solutions\instaspin_ince\boards\drv8312kit_revD\F28x\f2805xF\projects\ccs5\proj_lab01,2805,SCI设置函数AS

void HAL_setupSCIs (HAL_HANDLE句柄)

HAL_Obj *OBJ =(HAL_Obj *)句柄;

//A端口
Sci_setNumStopBits(obj->sciHandle[0],SCI_NumStopBits_one);
sci_disableParity(obj->sciHandle[0]);
Sci_setCharLength (obj->sciHandle[0],SCI_CharLength _8_Bits);
sci_enablerx(obj->sciHandle[0]);
sci_enableTx (obj->sciHandle[0]);
Sci_setBaudRate(obj->sciHandle[0],SCI_baudrate_9_6_kBaud);//Baud 9.6 * 4 = 38.4kBaud
//SCI_enableRxInt(obj->sciHandle[0]);
sci_enableLoopBack(obj->sciHandle[0]);//设置环回以进行测试
sci_enable(obj->sciHandle[0]);

//B端口
Sci_setNumStopBits(obj->sciHandle[1],SCI_NumStopBits_one);
sci_disableParity(obj->sciHandle[1];
Sci_setCharLength (obj->sciHandle[1],SCI_CharLength _8_Bits);
sci_enablerx(obj->sciHandle[1]);
sci_enableTx (obj->sciHandle[1]);
Sci_setBaudRate(obj->sciHandle[1],SCI_baudrate_9_6_kBaud);//Baud 9.6 * 4 = 38.4kBaud
//SCI_enableRxInt(obj->sciHandle[1]);
sci_enableLoopBack(obj->sciHandle[1]);//设置环回以进行测试
sci_enable(obj->sciHandle[1]);

//C端口
Sci_setNumStopBits(obj->sciHandle[2],SCI_NumStopBits_one);
sci_disableParity(obj->sciHandle[2]);
Sci_setCharLength (obj->sciHandle[2],SCI_CharLength _8_Bits);
sci_enablerx(obj->sciHandle[2]);
sci_enableTx (obj->sciHandle[2]);
Sci_setBaudRate(obj->sciHandle[2],SCI_Baudrate_9_6_kBaud);//Baud 9.6 * 4 = 38.4kBaud
//SCI_enableRxInt(obj->sciHandle[2]);
sci_enableLoopBack(obj->sciHandle[2]);//设置环回以进行测试
sci_enable(obj->sciHandle[2]);

返回;
}

GPIO定义为

// SCI-RX-DA-X
GPIO设置模式(obj->gpioHandle, GPIO编号_28, GPIO 28模式_SCIRXDA);
GPIO _setPullup(obj->gpioHandle, GPIO编号_28, GPIO _Pullup_Enable);
GPIO _setQualification (obj->gpioHandle,GPIO编号_28,GPIO Qual_Async);

// SCI-TX-DA-X
GPIO设置模式(obj->gpioHandle, GPIO编号_29, GPIO 29_Mode_SCITXDA);
GPIO_setPullup(obj->gpioHandle, GPIO编号_29, GPIO_Pullup_Enable);

// SCI-TX-DB-Y
GPIO设置模式(obj->gpioHandle,GPIO编号_14,GPIO 14_Mode_SCITXDB);
GPIO _setPullup(obj->gpioHandle, GPIO编号_14, GPIO _Pullup_Enable);

// SCI-RX-DB-Y
GPIO _setMode(obj->gpioHandle,GPIO编号_15,GPIO _15_Mode_SCIRXDB);
GPIO _setPullup(obj->gpioHandle, GPIO编号_15, GPIO _Pullup_Enable);
GPIO _setQualification (obj->gpioHandle,GPIO编号_15,GPIO Qual_Async);

// SCI-RX-DC-Z
GPIO_setMode(obj->gpioHandle,gPIO_NUMBER_26,gPIO_26_Mode_SCIRXDC);
GPIO _setPullup(obj->gpioHandle, GPIO编号_26, GPIO _Pullup_Enable);
GPIO _setQualification (obj->gpioHandle,GPIO编号_26,GPIO Qual_Async);

// SCI-TX-DC-Z
GPIO_setMode(obj->gpioHandle,gPIO_NUMBER_27,gPIO_27_Mode_SCITXDC);
GPIO _setPullup(obj->gpioHandle,GPIO编号_27,GPIO _Pullup_Enable);

非常感谢

Winston

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    温斯顿
    如果所有3个SCI端口的代码完全相同,则SCI-B和SCI-C不工作是没有理由的。 如果使用外部回送,则可能需要重新检查GPIO配置。 您是否尝试运行controlSUITE示例? 提供的示例适用于SCI-A,但也可以轻松地针对B和C进行修改
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hareesh,您好!

    我用'controlSUITE'回路示例测试了3个SCI端口。 它们都运行良好。 但使用'motorware' lab01时,我仍然无法解决问题。  

    除了SCI的初始化和GPIO的定义之外,我还在主要功能中使用了2个函数,如下所示

    while (true)(对)

    发件人++;

    如果(sender == 256) sender =0;

    sci_putDataLocking(obj->sciHandle[0],发送方);

    接收器= SCI_getDataLocking(obj->sciHandle[0]);
    }

    很奇怪,一个端口(sciHandle(0))可以正常工作,但B端口(sciHandle(1))和C端口(sciHandle(2))不能正常工作。 B和C端口将始终等待Rx数据就绪。

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

    是否已在HAL_setupPeripheralClks()中启用相应的外设时钟?

    Sean

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对,我没有启用相应的外设时钟。 谢谢,Sean。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    温斯顿

    请关闭帖子。