大家好、我使用 TMS570LS1227的双通道 SCI 接口同时发送数据。 SCI/LIN 传输数据正常、但另一个 SCI 接口未正确发送、且其 TX 引脚始终为低电平! 有谁可以回答这个问题? 非常感谢!
以下是初始化完成后我的代码和相关寄存器的内容。
空 sciInit (空)
{
/**@b intalise @b SCI1 */
/**-使 SCI 退出复位*/
sciREG1->GCR0 = 1U;
/**-禁用所有中断*/
sciREG1->CLRINT = 0xFFFFFFFF;
sciREG1->CLRINTLVL = 0xFFFFFFFF;
/**-全局控制1 */
sciREG1->GCR1 =(1 << 25)//启用传输*/
|(1 << 24)//启用接收*/
|(1 << 5) /*内部时钟(器件没有时钟引脚)*/
|(0 << 4) /*停止位数*/
|(0 << 3) /*偶数奇偶校验、否则为奇数*/
|(0 << 2) /*启用奇偶校验*/
|(1 << 1) /*异步计时模式*/
|(0 < 0);
sciREG1->GCR1 = 0x03000022;
/**-设置波特率*/
sciREG1->baud = 259; /* 19.2kHz,波特率*/
/**-传输长度*/
sciREG1->length = 7;/* length 为7+1 */
/**-设置 SCI 引脚功能模式*/
sciREG1->fy =(1 << 2)/* TX 引脚*/
|(1 << 1)/* Rx 引脚*/
|(0);/* clk 引脚*/
/**-设置 SCI 引脚默认输出值*/
sciREG1->DOUT =(0 << 2)/* TX 引脚*/
|(0 << 1)/* Rx 引脚*/
|(0);/* clk 引脚*/
/**-设置 SCI 引脚输出方向*/
sciREG1->DIR =(0 << 2)/* TX 引脚*/
|(0 << 1)/* Rx 引脚*/
|(0);/* clk 引脚*/
/**-设置 SCI 引脚开漏使能*/
sciREG1->ODR =(0 << 2)/* TX 引脚*/
|(0 << 1)/* Rx 引脚*/
|(0);/* clk 引脚*/
/**-设置 SCI 引脚上拉/下拉使能*/
sciREG1->PD =(0 << 2)/* TX 引脚*/
|(0 << 1)/* Rx 引脚*/
|(0);/* clk 引脚*/
/**-设置 SCI 引脚上拉/下拉选择*/
sciREG1->PSL =(1 << 2)/* TX 引脚*/
|(1 << 1)/* Rx 引脚*/
|(1);/* clk 引脚*/
/**-设置中断级别*/
sciREG1->SETINTLVL =(0 << 26)/*帧错误*/
|(0 < 25)/*溢出错误*/
|(0 < 24)/*存在毛利错误*/
|(0 << 9) /*接收*/
|(0 < 8) /*发送*/
|(0 << 1) /*唤醒*/
|(0); /*中断检测*/
/**-设置中断使能*/
sciREG1->SETINT =(0 << 26)/*帧错误*/
|(0 < 25)/*溢出错误*/
|(0 < 24)/*存在毛利错误*/
|(1 << 9) /*接收*/
|(0 << 1) /*唤醒*/
|(0);/*中断检测*/
/**-设置中断使能*/
sciREG1->CLRINT =(0 << 26)/*帧错误*/
|(0 < 25)/*溢出错误*/
|(0 < 24)/*存在毛利错误*/
|(0 << 9)/*接收*/
|(0 << 1)/*唤醒*/
|(0);/*中断检测*/
/**- inialise 全局传输变量*/
// g_sciTransfer[0]。mode = 0 << 8;
// g_sciTransfer[0].length = 0;
/**-最终启动 SCI1 */
sciREG1->GCR1 |= 0x80;
/**@b intalise @b SCI2 */
/**-使 SCI 退出复位*/
sciREG2->GCR0 = 1U;
/**-禁用所有中断*/
sciREG2->CLRINT = 0xFFFFFFFF;
sciREG2->CLRINTLVL = 0xFFFFFFFF;
tmp_reg = sciREG2->DIN;
/**-全局控制1 */
sciREG2->GCR1 =(1 << 25)//启用传输*/
|(1 << 24)//启用接收*/
|(1 << 5) /*内部时钟(器件没有时钟引脚)*/
|(0 << 4) /*停止位数*/
|(0 << 3) /*偶数奇偶校验、否则为奇数*/
|(0 << 2) /*启用奇偶校验*/
|(1 << 1) /*异步计时模式*/
|(0 < 0);
sciREG2->GCR1 = 0x03000022;
/**-设置波特率*/
sciREG2->baud = 259; /* 19.2kHz,波特率*/
/**-传输长度*/
sciREG2->length = 7;/* length 为7+1 */
/**-设置 SCI 引脚功能模式*/
sciREG2->fy =(1 << 2)/* TX 引脚*/
|(1 << 1)/* Rx 引脚*/
|(0);/* clk 引脚*/
/**-设置 SCI 引脚默认输出值*/
sciREG2->DOUT =(0 << 2)/* TX 引脚*/
|(0 << 1)/* Rx 引脚*/
|(0);/* clk 引脚*/
/**-设置 SCI 引脚输出方向*/
sciREG2->DIR =(0 << 2)/* TX 引脚*/
|(0 << 1)/* Rx 引脚*/
|(0);/* clk 引脚*/
/**-设置 SCI 引脚开漏使能*/
sciREG2->ODR =(0 << 2)/* TX 引脚*/
|(0 << 1)/* Rx 引脚*/
|(0);/* clk 引脚*/
/**-设置 SCI 引脚上拉/下拉使能*/
sciREG2->PD =(0 << 2)/* TX 引脚*/
|(0 << 1)/* Rx 引脚*/
|(0);/* clk 引脚*/
/**-设置 SCI 引脚上拉/下拉选择*/
sciREG2->PSL =(1 << 2)/* TX 引脚*/
|(1 << 1)/* Rx 引脚*/
|(1);/* clk 引脚*/
/**-设置中断级别*/
sciREG2->SETINTLVL =(0 << 26)/*帧错误*/
|(0 < 25)/*溢出错误*/
|(0 < 24)/*存在毛利错误*/
|(0 << 9) /*接收*/
|(0 < 8) /*发送*/
|(0 << 1) /*唤醒*/
|(0); /*中断检测*/
/**-设置中断使能*/
sciREG2->SETINT =(0 << 26)/*帧错误*/
|(0 < 25)/*溢出错误*/
|(0 < 24)/*存在毛利错误*/
|(1 << 9) /*接收*/
|(0 << 1) /*唤醒*/
|(0);/*中断检测*/
/**-设置中断使能*/
sciREG2->CLRINT =(0 << 26)/*帧错误*/
|(0 < 25)/*溢出错误*/
|(0 < 24)/*存在毛利错误*/
|(0 << 9)/*接收*/
|(0 << 1)/*唤醒*/
|(0);/*中断检测*/
/**- inialise 全局传输变量*/
// g_sciTransfer[0]。mode = 0 << 8;
// g_sciTransfer[0].length = 0;
tmp_reg = sciREG2->DIN;
/**-最终启动 SCI2 */
sciREG2->GCR1 |= 0x80;
}

