[ZLG-ARM] 在线救助 无法实现UART0月UART1的通信

[复制链接]
2320|4
 楼主| chris1013 发表于 2007-3-7 00:07 | 显示全部楼层 |阅读模式
使用LPC2142与XBee的Zigebee模块,打算先由UART0读入数据,传入UART1,再从UART1传出数据到Zigbee模块,但发现UART0与UART1之间无法通信,初步估计是UART1的初始化失败,请高人指点,小弟在线等待~~QQ&nbsp;157493515<br />/******************************************************<br />&nbsp;*&nbsp;Include&nbsp;files<br />&nbsp;******************************************************/<br />#include&nbsp;&ltgeneral.h&gt<br />#include&nbsp;&ltlpc2xxx.h&gt<br />#include&nbsp;&ltconfig.h&gt<br />#include&nbsp;&ltprintf_P.h&gt<br />#include&nbsp;&ltea_init.h&gt<br /><br /><br />/******************************************************<br />&nbsp;*&nbsp;Defines<br />&nbsp;******************************************************/<br />#define&nbsp;UART_DLL_VALUE&nbsp;(tU16)((60000000&nbsp;/&nbsp;(9600&nbsp;*&nbsp;16.0))&nbsp;+&nbsp;0.5)<br />#define&nbsp;UART_DLL_VAL&nbsp;(tU16)((60000000&nbsp;/&nbsp;(38400&nbsp;*&nbsp;16.0))&nbsp;+&nbsp;0.5)<br /><br /><br />/*****************************************************************************<br />&nbsp;*<br />&nbsp;*&nbsp;Description:<br />&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;Initializes&nbsp;the&nbsp;UART&nbsp;channel&nbsp;#0&nbsp;(38400&nbsp;kbps,&nbsp;8N1)<br />&nbsp;*<br />&nbsp;****************************************************************************/<br />void<br />initUart1(void)<br />{<br />//enable&nbsp;uart&nbsp;#1&nbsp;pins&nbsp;(P0.8&nbsp;=&nbsp;TxD0,&nbsp;P0.9&nbsp;=&nbsp;RxD0)<br />&nbsp;PINSEL0&nbsp;=&nbsp;(PINSEL0&nbsp;&&nbsp;0xfff0ffff)&nbsp;|&nbsp;0x00050000;<br /><br />&nbsp;&nbsp;//initialize&nbsp;bitrate&nbsp;(by&nbsp;first&nbsp;enable&nbsp;DL&nbsp;registers,&nbsp;DLAB-bit&nbsp;=&nbsp;1)<br />&nbsp;&nbsp;U1LCR&nbsp;=&nbsp;0x80;<br />&nbsp;&nbsp;U1DLL&nbsp;=&nbsp;(tU8)(UART_DLL_VALUE&nbsp;&&nbsp;0x00ff);<br />&nbsp;&nbsp;U1DLM&nbsp;=&nbsp;(tU8)(UART_DLL_VALUE&gt&gt8);<br />&nbsp;&nbsp;U1LCR&nbsp;=&nbsp;0x00;<br /><br />&nbsp;&nbsp;//initialize&nbsp;LCR:&nbsp;8N1<br />&nbsp;&nbsp;U1LCR&nbsp;=&nbsp;0x03;<br /><br />&nbsp;&nbsp;//disable&nbsp;FIFO<br />&nbsp;&nbsp;U1FCR&nbsp;=&nbsp;0x00;<br /><br />&nbsp;&nbsp;//clear&nbsp;interrupt&nbsp;bits,&nbsp;just&nbsp;in&nbsp;case&nbsp;(not&nbsp;used)<br />&nbsp;&nbsp;U1IER&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;//U1MCR&nbsp;=&nbsp;0x00;<br />}<br />void<br />initUart0(void)<br />{<br />&nbsp;&nbsp;//enable&nbsp;uart&nbsp;#0&nbsp;pins&nbsp;(P0.0&nbsp;=&nbsp;TxD0,&nbsp;P0.1&nbsp;=&nbsp;RxD0)<br />&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;(PINSEL0&nbsp;&&nbsp;0xfffffff0)&nbsp;|&nbsp;0x00000005;<br /><br />&nbsp;&nbsp;//initialize&nbsp;bitrate&nbsp;(by&nbsp;first&nbsp;enable&nbsp;DL&nbsp;registers,&nbsp;DLAB-bit&nbsp;=&nbsp;1)<br />&nbsp;&nbsp;U0LCR&nbsp;=&nbsp;0x80;<br />&nbsp;&nbsp;U0DLL&nbsp;=&nbsp;(tU8)(UART_DLL_VAL&nbsp;&&nbsp;0x00ff);<br />&nbsp;&nbsp;U0DLM&nbsp;=&nbsp;(tU8)(UART_DLL_VAL&gt&gt8);<br />&nbsp;&nbsp;U0LCR&nbsp;=&nbsp;0x00;<br /><br />&nbsp;&nbsp;//initialize&nbsp;LCR:&nbsp;8N1<br />&nbsp;&nbsp;U0LCR&nbsp;=&nbsp;0x03;<br /><br />&nbsp;&nbsp;//disable&nbsp;FIFO<br />&nbsp;&nbsp;U0FCR&nbsp;=&nbsp;0x00;<br /><br />&nbsp;&nbsp;//clear&nbsp;interrupt&nbsp;bits,&nbsp;just&nbsp;in&nbsp;case&nbsp;(not&nbsp;used)<br />&nbsp;&nbsp;U0IER&nbsp;=&nbsp;0x00;<br />}<br /><br />/*****************************************************************************<br />&nbsp;*<br />&nbsp;*&nbsp;Description:<br />&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;Blocking&nbsp;output&nbsp;routine,&nbsp;i.e.,&nbsp;the&nbsp;routine&nbsp;waits&nbsp;until&nbsp;the&nbsp;uart&nbsp;<br />&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;buffer&nbsp;is&nbsp;free&nbsp;and&nbsp;then&nbsp;sends&nbsp;the&nbsp;character.&nbsp;<br />&nbsp;*<br />&nbsp;*&nbsp;Params:<br />&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;[in]&nbsp;charToSend&nbsp;-&nbsp;The&nbsp;character&nbsp;to&nbsp;send/print<br />&nbsp;*<br />&nbsp;****************************************************************************/<br />tBool&nbsp;receiveCharPoll()<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;if(!(U0LSR&nbsp;&&nbsp;0x01))<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />void<br />sendToZigbee(tBool&nbsp;t)<br />{<br />&nbsp;&nbsp;//Wait&nbsp;until&nbsp;THR&nbsp;register&nbsp;is&nbsp;empty<br />&nbsp;&nbsp;while(!(U0LSR&nbsp;&&nbsp;0x20))<br />&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(t)<br />&nbsp;&nbsp;//output&nbsp;character&nbsp;value&nbsp;to&nbsp;THR<br />&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U1THR&nbsp;=&nbsp;U0RBR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;}<br />void&nbsp;<br />returnState()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;tU8&nbsp;anrry[10];<br />&nbsp;&nbsp;&nbsp;tU16&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(U1LSR&nbsp;&&nbsp;0x01)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anrry=U1RBR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;for(j=0;j&lt=i;j++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U0THR&nbsp;=&nbsp;anrry;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;}
hotpower 发表于 2007-3-7 00:50 | 显示全部楼层

倒塌了~~~真心在线肯定不睡觉~~~

  
 楼主| chris1013 发表于 2007-3-7 01:47 | 显示全部楼层

在吃晚饭呢...继续在线求助~~

  
zlgARM 发表于 2007-3-7 08:58 | 显示全部楼层

RE

UART0和UART1在基本的串口通讯功能初始化上,除了涉及的寄存器地址不一样外,初始化流程几乎完全一样。<br />先参照例程单独调试一下UART1的基本串口功能。
hotpower 发表于 2007-3-7 12:15 | 显示全部楼层

先各自调试好再链接,应该很容易~~~

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部