基于IMX515 EVK+WINCE6.0---debug串口由UART1改为UART2

发布时间:2017-3-24 4:05:18 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"基于IMX515 EVK+WINCE6.0---debug串口由UART1改为UART2",主要涉及到基于IMX515 EVK+WINCE6.0---debug串口由UART1改为UART2方面的内容,对于基于IMX515 EVK+WINCE6.0---debug串口由UART1改为UART2感兴趣的同学可以参考一下。

基于IMX515 EVK+WINCE6.0---debug串口由UART1改为UART2   1.      硬件变更 EVK评估板采用UART1作为调试口,而我们的平台用UART2作为调试口,先来看下图: 图1 由此可见,IMX515一般情况下都有多个PAD可以由软件配置为同样的功能,比如EIM_D17 PAD可以配置为UART2_RXD功能,UART2_RXD PAD也可以配置为UART2_RXD功能,这就是IMX515的灵活的地方,同时也增加了复杂性。   我们的平台是分别选择UART2_RXD和UART2_TXD这两个PAD分别作为UART2_RXD和UART2_TXD功能的。   2.      软件上的修改 2.1  debug 串口的初始化流程   图2   2.2  debug串口流程中需要修改和或是比较重要的函数介绍 ⑴OEMInitDebugSerial函数 图3 BSP_BASE_REG_PA_DEBUG_SERIAL在src\inc\bsp_base_reg_cfg.h中定义如下: #define BSP_BASE_REG_PA_DEBUG_SERIAL        CSP_BASE_REG_PA_UART1 这里定义了串口debug起始物理地址,采用这样的方式比较便于根据项目需要修改debug的串口,因为我们的debug改为UART2,所以要改为: #define BSP_BASE_REG_PA_DEBUG_SERIAL        CSP_BASE_REG_PA_UART2 相应的serInfo.uartBaseAddr = CSP_BASE_REG_PA_UART1;也改为serInfo.uartBaseAddr= BSP_BASE_REG_PA_DEBUG_SERIAL   ⑵OALConfigSerialUART 图4 接下来的代码是,在软件复位完成后,配置UCR1~4寄存器、UFCR、UTS、UBIR和UBMR寄存器: 图5   这里的pBspArgs->clockFreq[DDK_CLOCK_SIGNAL_UART]在OALBspArgsInit函数中赋值的,而且要注意的是在向UBMR写入数据之前必须先写入UBIR,否则写的动作被忽略。   ⑶OALConfigSerialIOMUX 图6 详细信息见IOMUXC_SW_MUX_CTL_PAD_UART1_RXD寄存器,为了更好去理解,我们先来看EVK板debug串口原理图部分: 图7 由图7可知分别采用UART1_RXD和UART1_TXD这两个PAD座位UART1_RX和UART1_TX,对于IMX515,有几个功能模块的port可以连接到UART1_RXD和UART1_TXD,如下图: 图8   对于UART1_RXD来说,由图8可知,RXD_MUX、GPIO[28]、READY_ESC_OUT、EMI_DEBUG[12]和DATAOUT[10]这些Port在IOMUXC的控制下,可选择其中一个Port连接到UART1_RXD这个PAD上,具体选择哪个Port,可根据项目的实际需要由软件来选择,Port和PAD的关系如下: 图9 对于硬件设计人员来说,需要知道IMX515对外连接的有哪些PAD,每个PAD可以作为哪些功能,比如对于UART2_RXD这PAD来说,可以选择作为下面的功能: 图10 因为我们采用UART2_RXD和UART2_TXD这两个PAD分别作为UART2_RXD和UART2_TXD功能的,所以需要把OALConfigSerialIOMUX函数修改为下面的代码: case CSP_BASE_REG_PA_UART2:  // kandi add at 2013.09.07 OAL_IOMUX_SET_MUX(pIOMUX,DDK_IOMUX_PIN_UART2_RXD,                             DDK_IOMUX_PIN_MUXMODE_ALT0,DDK_IOMUX_PIN_SION_REGULAR); OAL_IOMUX_SET_MUX(pIOMUX,DDK_IOMUX_PIN_UART2_TXD,                             DDK_IOMUX_PIN_MUXMODE_ALT0,DDK_IOMUX_PIN_SION_REGULAR); OAL_IOMUX_SEL_IN(pIOMUX,DDK_IOMUX_SELECT_INPUT_UART2_IPP_UART_RXD_MUX,0x2); 最后一行OAL_IOMUX_SEL_IN是选择UART2_RXD这个PAD为ALT0模式,为什么还要做这个设置呢?先来看IOMUXC_SW_MUX_CTL_PAD_UART2_RXD寄存器相关位的描述,如下: 图11 因为UART2_RXD PAD在daisy chain结构中,我们需要先通过IOMUXC_SW_MUX_CTL_PAD_UART2_RXD寄存器选为UART2_RXDPAD为ALT0模式,然后再配置IOMUXC_UART2_IPP_UART_RXD_MUX_SELECT_INPUT寄存器,如下图: 图12  

上一篇:Servlet:htm+javascript+css+servlet (ajax)实现上传(能显示进度条)
下一篇:[置顶] YII 高级查询

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款