一文解决K210与STM32串口通信问题

前言

STM32的代码可以直接拿江科大9-5的代码(点这里)来用,为了使本文尽量浅显易懂,我的K210串口代码直接与之匹配。等你们弄懂了这个案例中的具体原理后就可以自定义自己的收发协议了。

1.K210串口映射

K210有很多引脚,且这些引脚的功能都可以自定义,所以在进行串口通信之前,我们需要先进行引脚的映射,设定一个RX引脚,一个TX引脚。引脚映射方法具体可以看这个文档(点这里)

这里贴出我的引脚映射代码:

from board import board_info
from fpioa_manager import fm
from machine import Timer,UART
import utime as t
import maix

fm.register(10, fm.fpioa.UART1_TX, force=True)
fm.register(11, fm.fpioa.UART1_RX, force=True)
fm.register(8, fm.fpioa.UART2_TX, force=True)
fm.register(9, fm.fpioa.UART2_RX, force=True)

把10引脚定义成串口1的TX,11定义成RX,把8,9定义成串口2的TX和RX,这里定义两个串口是为了方便讲解,串口1专门用来进行写入操作,串口2专门用来读操作

接下来设置串口配置,9600是波特率,一般来说只需把波特率改成STM32中对应的波特率即可,其他的不用动。

uart_A = UART(UART.UART1, 9600,read_buf_len=4096)
uart_B = UART(UART.UART2, 9600,read_buf_len=4096)

2.K210写,STM32读

将K210的引脚与STM32接上,具体解法可以看江科大9-5,就是把USB转串口的三条线换成K210的线就行,切记K210的GND要与STM32共地。

接下来开始进行写入操作:

while(True):
    write_str =  b'\xff\x02\x03\x04\x05\xfe'
    uart_A.write(write_str)


uart_A.deinit()
uart_B.deinit()
del uart_A
del uart_B

不出意外的话,这个时候应该可以在32的OLED屏上看见写入的数据02030405了,为什么这里的write_str要这样写呢?因为在python中,b‘xxxxxx’这种形式是一种特殊的形式,叫字节码,\x03意思是十六进制下的03,因为串口收发的是十六进制,只有这样,stm32才能接收对应的数据。

至于如何更改字节码中的数据,我们可以进行强制类型转换,详细做法可以上网去查,这里贴一个我的代码

             x_pos = b[5]  
            y_pos = b[6]  
            X = '%04d' % x_pos
            Y = '%04d' % y_pos
            X1=int(X)//100;
            X2=int(X)%100;
            Y1=int(Y)//100;
            Y2=int(Y)%100;
            x1='%02d'%X1
            x2='%02d'%X2
            y1='%02d'%Y1
            y2='%02d'%Y2
            byte1 = int(x1, 16)
            byte2 = int(x2, 16)
            byte3 = int(y1, 16)
            byte4 = int(y2, 16)
            DATA = bytes([0xff, byte1, byte2, byte3, byte4, 0xfe])
            uart.write(DATA)

3.STM32写,K210读

 read_data = uart_B.read()
   
    if read_data:
        read_str = read_data
        print("string = ", read_str)

至于K210读的问题我们只需在while循环中使用uart_B.read即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值