串口配置一般步骤
串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();
串口复位:USART_DeInit(); 这一步不是必须的
GPIO端口模式设置:GPIO_Init(); 模式设置为推挽复用以及浮空输入或者上拉输入(具体可参照中文参考手册)
串口参数初始化:USART_Init();
开启中断并且初始化NVIC(如果需要开启中断才需要这个) NVIC_Init();USART_ITConfig();
使能串口:USART_Cmd();
编写中断处理函数:USARTx_IRQHandler();
串口数据收发:void USART_SendData();
串口传输状态获取:
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
1,协议数据格式
0xAA 0xFF CMD ID Len Len Data1 Data2 Data... 校验和 校验和
开始字节 开始字节 命令ID号低八位 数据长度高8位 数据长度低8位 数据1 数据
2 数据N 校验和高8位 校验和低8位
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte
1.1开始字节
每包数据开始都需要发送0xAA 0xFF,标识数据包的开始
1.2 CMD ID
命令字节
1.3数据长度:
Data1.....DataN的长度
1.4 校验和
Data1......DataN的累加和
1.5 主从命令包回复
主机和从CPU通信,所有的命令不会有应答机制,因为有心跳包机制,保证主从通讯是OK的。
2,通讯协议数据
2.1 心跳包数据 0x01
0xAA 0xFF 0x01 0 0 0 0
2.1.1数据包发送对象
主机和从机同时发送此数据包
2.1.2介绍
心跳包保证主机和副CPU通信是正常的,每隔500ms发送一次。
2.2 主机启动OK 0x02
0xAA 0xFF 0x02 0 0 0 0
2.2.1数据包发送对象
主机发送给从机
2.2.2介绍
主机告诉从CPU,主机已经准备就绪,从机在收到此命令时才能发送数据给主机,
在收到此指令之前,从机不要发送数据给主机。
2.3 报警 0x03
2.3.1 数据包发送对象
主机发送给从机
2.3.2数据段
大小:1byte
数据段值
0x00:停止报警
0x01:高级报警
0x02:中级报警
0x03:低级报警
2.4 病人类型设置 0x04
2.4.1 数据包发送对象
主机发送给从机
2.4.2数据段
数据段大小:1byte
数据段值
0x00:成人
0x01:小孩
0x02:新生儿
2.5: 血氧 0x05
2.5.1 数据包发送对象
从机发送给主机器
2.5.2数据段
大小:4bytes
Byte1: 0x00无血氧 0x01有线血氧 0x02 无线血氧
Byte2:血氧值
Byte3:脉率值低八位
Byte4:脉率值高八位
Byte5:错误信息值
错误信息值:(每一位代表一种错误信息值,共八位)
Bit0:血氧探头脱落
Bit1:手指未接入
Bit2:
Bit3:
Bit4:
Bit5:
Bit6:
Bit7:
2.6:有线血氧透传数据 0x06
2.6.1 数据包发送对象
从机发送给送主机,主机发送给从机
2.6.2数据段
有线血氧模块数据
2.7:无线模块透传数据 0x07
2.7.1 数据包发送对象
从机发送给送主机,主机发送给从机
2.7.2数据段
无线模块数据