01 串口通讯协议简介
串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式, 电子工程师在调试设备时也经常使用该通讯方式输出调试信息。
在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;官方SDK库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定 通讯逻辑,统一收发双方的数据打包、解包标准。简单来说物理层规定我们用嘴巴还是用肢体来交流,协议层则规定我们用中文还是英文来交流。
02 K210的串口类型
(1)高速UART
高速 UART 为 UARTHS(UART0)
(2)通用UART
通用UART为UART1、UART2 和UART3,支持异步通信(RS232和RS485和IRDA,通信速率可达到5Mbps。UART支持CTS和RTS 信号的硬件管理以及软件流控 (XON和XOFF)。3 个接口均可被DMA访问或者CPU直接访问
03 通用UART测试例程
#include "fpioa.h"
#include "sleep.h"
#include "uart.h"
#include <string.h>
// 硬件IO口,与原理图对应
#define PIN_UART_USB_RX (4)
#define PIN_UART_USB_TX (5)
/// @brief
/// @param
/// @return
int main(void)
{
// fpioa映射
fpioa_set_function(4, FUNC_UART1_RX);
fpioa_set_function(5, FUNC_UART1_TX);
uart_init(UART_DEVICE_1);
uart_config(UART_DEVICE_1,115200,UART_BITWIDTH_8BIT,UART_STOP_1,UART_PARITY_NONE);
char *myword = {"test word!!\n"};
uart_send_data(UART_DEVICE_1,myword,strlen(myword));
while(1)
{
msleep(1000);
uart_send_data(UART_DEVICE_1,myword,strlen(myword));
}
}
}
04 高速串口测试例程
#include "fpioa.h"
#include "sleep.h"
#include "uart.h"
#include <string.h>
/// @brief
/// @param
/// @return
int main(void)
{
// fpioa映射
fpioa_set_function(4, FUNC_UARTHS_RX);
fpioa_set_function(5, FUNC_UARTHS_TX);
uart_init(UART_DEVICE_1);
uart_config(UART_DEVICE_1,115200,UART_BITWIDTH_8BIT,UART_STOP_1,UART_PARITY_NONE);
char *myword = {"0000!!\n"};
uart_send_data(UART_DEVICE_1,myword,strlen(myword));
while(1)
{
msleep(1000);
uart_send_data(UART_DEVICE_1,myword,strlen(myword));
}
}