主题中讨论的其他器件:HALCOGEN
大家好、我正在尝试为 SCI1、SCI3和 SCI4模块使用 GIO 功能、我已经使用了 Halcogen 来配置端口、我正在使用下面的来驱动代码中的端口。
gioToggleBit (sciPORT3、PIN_SCI_TX);//在 GIO 模式下切换 sciPORT3 "SCI3TX"。 *
gioToggleBit (sciPORT3、PIN_SCI_RX);//在 GIO 模式下切换 sciPORT3 "SCI3RX"。 *
我已针对所有使用的 SCI 端口执行上述操作。 TX 线路工作正常、在被要求时切换、但 RX 引脚没有切换、这在所使用的所有 SCI 模块上看起来是恒定的。
我已经尝试了一种替代方法、并在 HL_sci.h 中使用了枚举、如下所示、但这也不起作用。
gioSetBit (sciPORT4、PIN_SCI_RX、1U);
然后等待一个周期
gioSetBit (sciPORT4、PIN_SCI_RX、0U);
下面是 sciInit 的一部分、该 sciInit 是从 Halcogen 为 SCI4输出的、作为其配置方式的示例。
/**@b 初始化@b SCI4 */
/**-使 SCI4退出复位*/
sciREG4->GCR0 = 0U;
sciREG4->GCR0 = 1U;
/**-禁用所有中断*/
sciREG4->CLEARINT = 0xFFFFFFU;
sciREG4->CLEARINTLVL = 0xFFFFFFU;
/**-全局控制1 */
sciREG4->GCR1 =(uint32)((uint32) 1U <<25U)//启用传输*/
|(uint32)((uint32) 1U << 24U)/*启用接收*/
|(UINT32)((UINT32) 1U << 5U)//内部时钟(器件没有时钟引脚)*/
|(uint32)((uint32)(2U-1U)<< 4U)/*停止位数*/
|(uint32)((uint32) 0U << 3U)/*偶校验、否则为奇数*/
|(uint32)((uint32) 0U << 2U)/*启用奇偶校验*/
|(uint32)((uint32) 1U << 1U);/*异步计时模式*/
/**-设置波特率*/
sciREG4->BRS = 487U;/*波特率*/
/**-传输长度*/
sciREF4->format = 8U - 1U;/* length */
/**-设置 SCI4引脚功能模式*/
sciREF4->PIO0 =(uint32)((uint32) 0U << 2U)/* TX 引脚*
|(uint32)((uint32) 0U << 1U);/* Rx 引脚*
/**-设置 SCI4引脚默认输出值*/
sciREF4->PIO3 =(uint32)((uint32) 0U << 2U)/* TX 引脚*
|(uint32)((uint32) 0U << 1U);/* Rx 引脚*
/**-设置 SCI4引脚输出方向*/
sciREF4->PIO1 =(uint32)((uint32) 1U << 2U)/* TX 引脚*
|(uint32)((uint32) 1U << 1U);/* Rx 引脚*
/**-设置 SCI4引脚开漏使能*/
sciREF4->PIO6 =(uint32)((uint32) 0U << 2U)/* TX 引脚*
|(uint32)((uint32) 0U << 1U);/* Rx 引脚*
/**-设置 SCI4引脚上拉/下拉使能*/
sciREF4->PIO7 =(uint32)((uint32) 0U << 2U)/* TX 引脚*
|(uint32)((uint32) 0U << 1U);/* Rx 引脚*
/**-设置 SCI4引脚上拉/下拉选择*/
sciREF4->PIO8 =(uint32)((uint32) 1U << 2U)/* TX 引脚*
|(uint32)((uint32) 1U << 1U);/* Rx 引脚*
/**-设置中断级别*/
sciREG4->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);/*中断检测*
/**-设置中断使能*/
sciREG4->SETINT =(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[3U].mode =(uint32) 0U << 8U;
G_sciTransfer_t[3U].TX_length = 0U;
G_sciTransfer_t[3U].rx_length = 0U;
/**-最终启动 SCI4 */
sciREG4->GCR1 |= 0x80U;