我们正在使用TMS570lc4357并实施SCI驱动程序,在进行测试时,我们观察到SCI标志寄存器始终卡在值"0x0.0904万"处,不管SCI是否已初始化。 当我们解码此值时,已设置空闲标志,因此SCI无法接收任何数据。能否指导我们如何解决此问题?
我在下面给出了SCI初始化顺序,
/**@b初始化@b SCI2 */
/**-使SCI2退出复位*/
sciREG2->GCR0 = 0U;
sciREG2->GCR0 = 1U;
/**-禁用所有中断*/
sciREG2->CLEARINT = 0xFFFFFFFFU;
sciREG2->CLEARINTLVL = 0xFFFFFFFFU;
/**-全局控制1 */
sciREG2->GCR1 =(UINT32)((UINT32)1U <<25U)/*启用传输*/
|(UINT32)((UINT32)1U <<24U)/* enable receive */
|(UINT32)((UINT32)1U <5U)/*内部时钟(设备没有时钟引脚)*/
|(UINT32)((UINT32)(2U-1U)<4U)/*停止位数*/
|(UINT32)((UINT32) 0U << 3U)/*偶数奇偶校验,否则为奇数*/
|(UINT32)((UINT32) 0U << 2U)/* enable parity */
|(UINT32)((UINT32) 1U <1U);/*异步定时模式*/
/**-设置波特率*/
sciREG2->BRS = 40U;/*波特率*/
/**-传输长度*/
sciREG2->format =8U - 1U;/* length */
/**-设置SCI2引脚功能模式*/
sciREG2->PIO0 =(UINT32)((UINT32) 1U <2U)/* TX引脚*/
|(UINT32)((UINT32) 1U <1U);/* Rx引脚*/
/**-设置SCI2针脚默认输出值*/
sciREG2->PIO3 =(UINT32)((UINT32) 0U << 2U)/* TX引脚*/
|(UINT32)((UINT32) 0U << 1U);/* Rx引脚*/
/**-设置SCI2引脚输出方向*/
sciREG2->PIO1 =(UINT32)((UINT32) 1U <2U)/* TX引脚*/
|(UINT32)((UINT32) 0U << 1U);/* Rx引脚*/
/**-设置SCI2引脚打开排放启用*/
sciREG2->PIO6 =(UINT32)((UINT32) 0U << 2U)/* TX引脚*/
|(UINT32)((UINT32) 0U << 1U);/* Rx引脚*/
/**-设置SCI2引脚上拉/下拉启用*/
sciREG2->PIO7 =(UINT32)((UINT32) 0U << 2U)/* TX引脚*/
|(UINT32)((UINT32) 0U << 1U);/* Rx引脚*/
/**-设置SCI2引脚上拉/下拉选择*/
sciREG2->PIO8 =(UINT32)((UINT32) 1U <2U)/* TX引脚*/
|(UINT32)((UINT32) 1U <1U);/* Rx引脚*/
/**-设置中断级别*/
sciREG2->SETINTLVL =(UINT32)((UINT32) 0U << 26U)/*帧错误*/
|(UINT32)((UINT32) 0U << 25U)/*溢出错误*/
|(UINT32)((UINT32) 0U << 24U)/*奇偶校验错误*/
|(UINT32)((UINT32) 0U << 9U)/*接收*/
|(UINT32)((UINT32) 0U << 8U)/*传输*/
|(UINT32)((UINT32) 0U << 1U)/*唤醒*/
|(UINT32)((UINT32) 0U << 0U);/*中断检测*/
/**-设置中断启用*/
sciREG2->SEINT =(UINT32)((UINT32)0U <<26U)/*帧错误*/
|(UINT32)((UINT32) 0U << 25U)/*溢出错误*/
|(UINT32)((UINT32) 0U << 24U)/*奇偶校验错误*/
|(UINT32)((UINT32) 0U << 9U)/*接收*/
|(UINT32)((UINT32) 0U << 1U)/*唤醒*/
|(UINT32)((UINT32) 0U << 0U);/*中断检测*/
/**-初始化全局传输变量*/
G_sciTransfer_t[1U].mode =(UINT32) 0U << 8U;
G_sciTransfer_t[1U].TX_length = 0U;
G_sciTransfer_t[1U].rx_length = 0U;
/**-最终启动SCI2 */
sciREG2->GCR1 |= 0x80U;