目录
1.前言
2.代码部分
1.调用自带的库文件
2.将I/O19设置为UART1_RX功能并设置串口
3.数据接收函数
4.主程序
1.前言
之前更新了K210与STM32之间的串口通信,是K210发送信息STM32接收信息,这篇博客讲解一下K210 DOCK接收数据包。
2.代码部分
1.调用自带的库文件
from machine import UART #串口库函数
from fpioa_manager import fm # GPIO重定向函数
2.将I/O19设置为UART1_RX功能并设置串口
fm.register(19, fm.fpioa.UART1_RX, force=True)
uart_A = UART(UART.UART1, 115200, 8, 1, 0, timeout=1000, read_buf_len=4096)
在使用 uart1 前,我们需要使用 fm 来对芯片引脚进行映射和管理,将 I/O 19 设置为 uart1 的接收引脚。
波特率设置为115200,这里注意要发送信息的设备波特率一样。8位数据宽度,不需要奇偶校验位,1位停止位。
timeout 为串口接收超时时间。read_buf_len :串口接收缓冲,串口通过中断来接收数据,如果缓冲满了,将自动停止数据接收
3.数据接收函数
def UartReceiveDate():
global data
global RxCounter1
global com_data
global RxState
global Num
global Get
if uart_A.any()>0:
com_data = uart_A.readchar()
if com_data == 0x2B and RxState == 0:
RxState = 1
data[RxCounter1] = com_data
RxCounter1=RxCounter1+1
elif RxState == 1 and com_data==0x2A:
RxState=2
data[RxCounter1] = com_data
RxCounter1=RxCounter1+1
elif RxState == 2:
data[RxCounter1] = com_data
RxCounter1=RxCounter1+1
if RxCounter1 >=5 and com_data ==0x26:
Num = data[RxCounter1-3]-48
Get = data[RxCounter1-2]-48
RxCounter1 = 0
RxState = 0
print(Num,Get)
elif RxCounter1 > 5:
RxCounter1 = 0
RxState = 0
data = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
else:
RxCounter1=0
RxState=0
data = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
这部分的代码是移植我之前写在STM32是接收数据包的代码,想要了解逻辑的可以去看这篇文章的stm32串口接收部分。
这里和STM32稍微有一些不同,因为STM32上有串口中断,接收程序运行在中断里,串口有了数据才进行判断,而K210没有串口中断,只能在主程序中调用,所以要使用uart_A.any()判断串口是否接收到数据,确认接受到数据后才进入逻辑判断。文章来源:https://www.toymoban.com/news/detail-615876.html
4.主程序
Num = 0
Get = 0
while True:
UartReceiveDate()
time.sleep_ms(10)
print("Num:",Num,"Get",Get)
将接受到的代码打印到屏幕上。文章来源地址https://www.toymoban.com/news/detail-615876.html
到了这里,关于K210串口接收数据包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!