485(一般称作RS485、EIA-485)是属于OSI模型物理层的电器特性,规定位2线,半双工,多点通信的标准。它的电气特性和RS232不一样。RS485的电气特性:以两个线间的电压差为+(2~6)V表示逻辑“1”;以两线间的电压差为-(2~6)表示逻辑“0”。接口信号电平比RS232降低了,不易损坏接口电路芯片,而且于TTl电平兼容,可以方便与TTLD电路连接。
/************************************************************************************************
** 函数名: void UARTInit( uint32_t PortNum, uint32_t baudrate)
** 函数功能:串口初始化程序
** 输入参数: UARTNum 选择串口号,baudrate串口波特率大小
** 输出参数 :无
** 返回值:无
*************************************************************************************************/
void UARTInit( uint32_t UARTNum, uint32_t baudrate)
{
if ( UARTNum == 0 )
{
Chip_IOCON_PinMux(LPC_IOCON, 0, 2, IOCON_MODE_INACT, IOCON_FUNC1);//设置P0.2为串口功能管脚
Chip_IOCON_PinMux(LPC_IOCON, 0, 3, IOCON_MODE_INACT, IOCON_FUNC1); //设置P0.3为串口功能管脚
Chip_UART_Init(LPC_UART0);//初始化串口0
Chip_UART_SetBaud(LPC_UART0, baudrate);//设置波特率
Chip_UART_ConfigData(LPC_UART0, UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS);// 8 bits, 无校验, 1 个停止位
Chip_UART_TXEnable(LPC_UART0);//使能发送
}
else if ( UARTNum == 2 )
{
Chip_IOCON_PinMux(LPC_IOCON, 0, 10, IOCON_MODE_INACT, IOCON_FUNC1);//设置P0.10为串口功能管脚
Chip_IOCON_PinMux(LPC_IOCON, 0, 11, IOCON_MODE_INACT, IOCON_FUNC1); //设置P0.11为串口功能管脚
Chip_UART_Init(LPC_UART2);//初始化串口2
Chip_UART_SetBaud(LPC_UART2, baudrate);//设置波特率
Chip_UART_ConfigData(LPC_UART2, UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS); // 8 bits, 无校验, 1 个停止位
Chip_UART_TXEnable(LPC_UART2);//使能发送
}
else if ( UARTNum == 3 )
{
<span style="color: rgb(102, 102, 102); font-family: Monaco, Consolas, "Lucida Console", "Courier New", serif; font-size: 12px;">//第一步 设置P4.28 P4.29为串口功能</span>
Chip_IOCON_PinMux(LPC_IOCON, 4, 28, IOCON_MODE_INACT, IOCON_FUNC3);//设置P4.28为串口功能管脚
Chip_IOCON_PinMux(LPC_IOCON, 4, 29, IOCON_MODE_INACT, IOCON_FUNC3); //设置P4.29为串口功能管脚
/************************************************************************************************
** 函数名: int UART2_GetChar (void)
** 函数功能:串口2接收字节数据
** 输入参数:无
** 输出参数 :无
** 返回值:一个字节数据
*************************************************************************************************/
int UART3_GetChar (void)
{
//判断接收线是否有数据,没有数据,则等待。有数据,则读出
while (!(Chip_UART_ReadLineStatus(LPC_UART3) & UART_LSR_RDR));
return Chip_UART_ReadByte(LPC_UART3);
}
SET_DIR(1);//设置发送
SET_DIR(0);//设置接收