使用E840-DTU串口调试助手,除了能在手机与电脑间建立基于RS485的协议通讯桥梁,还能通过手机来控制基于RS485的外部设备。
这里是使用PY32F002AF15P6开发板与RS485模块构建了一个模拟的RS485设备,进而通过RS485的通讯协议来控制RGB_LED来实现色彩变换效果。
1. 串口通讯测试
对于PY32F002AF15P6开发板,其USART1的引脚功能如下:
PA02----TX1
PA03----RX1
在使用时,它与串口功能模块的连接关系为:
PA02 --> RX
PA03 --> TX
RGB_LED模块与开发板的连接关系为:
PA04-->R
PA06-->G
PA07-->B
对RGB_LED模块所用引脚的配置函数为:
int main(void)
{
uint8_t ZL[2] = {0xff, 0xff};
HAL_Init();
APP_LED_Init();
APP_RGB_LED_Init();
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET);
UartHandle.Instance = USART1;
UartHandle.Init.BaudRate = 9600;
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
UartHandle.Init.StopBits = UART_STOPBITS_1;
UartHandle.Init.Parity = UART_PARITY_NONE;
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UartHandle.Init.Mode = UART_MODE_TX_RX;
UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;
UartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
if (HAL_UART_Init(&UartHandle) != HAL_OK)
{
APP_ErrorHandler();
}
BSP_LED_On(LED_GREEN);
while (1)
{
if(HAL_UART_Receive(&UartHandle, (uint8_t *)ZL, 1, 5000) == HAL_OK)
{
if(ZL[0]==’R’)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); }
if(ZL[0]==’G’)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET);
}
if(ZL[0]==’B’)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET);
}
If(ZL[0]==’N’)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET);
}
HAL_Delay(250);
}
}
}经程序的编译和下载,其测试结果见图1和图2所示。

图1 串口收发测试

图2 控制效果
2. RS485协议控制
为进行RS485协议控制,需使用RS485功能模块,其外观见图3所示,模块的原理图见图4所示。

图3 模块外观

图4 模块原理图
在使用时,需按图5所示将2个控制引脚连接到一起接到GND。

图5 使用方法
为进行测试,还需使用有关USB转RS485模块,整体的测试电路见图6所示。

图6 测试线路
经测试,其效果见视频所示,所示功能正确。
以此为基础,若连接E840-DTU串口调试助手,即可实现手机对开发板上RGB_LED的色彩控制。
我要赚赏金
