主题:controlSUITE中讨论的其他部件
你好,冠军,
客户在 InstaSPIN项目中使用时遇到奇怪的SCI问题。 客户发现SCI可以在调试模式下接收数据,但无法在独立模式下接收,而电机控制功能工作正常。
FAE试图重新生成该问题,因此我根据客户项目进行了环回测试,您可以看到下面的测试代码,我将controlSUITE示例复制到InstaSPIN项目,最后我找到了原因:
如您所见,有三种方法可以编写 SCITXBUF,如果我使用了方法1和2,它可以在调试模式下工作并闪烁LED1,但在独立时失败。 只有方法3可以在调试和独立模式下工作。
该项目使用了OPT-level 2和6.4 6编译器。
请帮助我们评论为什么会发生这种情况,让我们来处理。
主{
// InstaSPIN初始代码
....
EALLOW;
SysCtrlRegs.LOSPPCP.ALL = 0x0002; // LOSPPCP预分段寄存器设置,通常将其设置为默认值
SysCtrlRegs.PCLKCR0.bit.SCIANCLK =1;// SCI-A
SysCtrlRegs.PCLKCR0.bit.SCIBENCLK =1;// SCI-B
EDIS;
SciaRegs.SCICCR.ALL =0x0007;// 1停止位,无回送
//无奇偶校验,8个字符位,
//异步模式,空闲线路协议
SciaRegs.SCICTL1.all =0x0003;//启用TX,RX,内部SCICLK,
//禁用RX ERR,睡眠,TXWAKE
SciaRegs.SCICT2.all =0x0003;
SciaRegs.SCICTL2.bit.TXINTENA =1;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;
SciaRegs.SCIHBAUD =0x0000;
SciaRegs.SCILBAUD =0x000F;
SciaRegs.SCICCR.bit.LOOPBKENA =1;//启用回路
SciaRegs.SCICTL1.all =0x0023;//从重置放弃SCI
对于(;;)
{
usDelay (US_to_CNT (10万));
// halHandle->sciHandle->SCITXBUF =(unsigned char)(0xAA); //方法1
// HAL_Obj *OBJ =(HAL_Obj *) halHandle; //方法2
// SCI_putDataLocking(obj->sciHandle, 0xAA);
SciaRegs.SCITXBUF=0xAA;//方法3
while (SciaRegs.SCIRXST.bit.RXRDY !=1){}
HAL_TOGLELed (halHandle,(GPIO编号_e) HAL_GPIO _LED1);
CommRxBUF[1]=(halHandle->sciHandle->SCIRXBUF)& 0x00ff;
....
}