问题:在使用K210时使用官方介绍的串口通信,发送的数据为八位的数据,但是在使用中需要十六位的,因为所需数据可能涉及到百位。
解决方法:将数据打包后发送。
一下为打包函数:
def sending_data(cx,cy,ch):
global uart;
#frame=[0x2C,18,cx%0xff,int(cx/0xff),cy%0xff,int(cy/0xff),0x5B];
#data = bytearray(frame)
data = ustruct.pack("<bbhhhb", #格式为俩个字符俩个短整型(2字节)
0x2C, #帧头1
0x12, #帧头2
int(cx), # up sample by 4 #数据1
int(cy), # up sample by 4 #数据2
int(ch),
0x5B)
uart = UART(UART.UART1, 115200, 8, 1, 0, timeout=1000, read_buf_len=4096)
uart.write(data); #必须要传入一个字节数组
MAIX BIT K210端完整代码
# object detector boot.py
# generated by maixhub.com
import sensor, image, lcd, time
import KPU as kpu
import gc, sys
import ustruct
#LED
from fpioa_manager import fm
from Maix import GPIO
io_led_red = 13
io_led_bule = 14
io_led_green = 12
fm.register(io_led_red, fm.fpioa.GPIO0)
fm.register(io_led_bule, fm.fpioa.GPIO1)
fm.register(io_led_green, fm.fpioa.GPIO2)
led_r=GPIO(GPIO.GPIO0, GPIO.OUT)
led_b=GPIO(GPIO.GPIO1, GPIO.OUT)
led_g=GPIO(GPIO.GPIO2, GPIO.OUT)
#串口
from fpioa_manager import fm
from machine import UART
# need your connect hardware IO 10/11 to loopback
fm.register(10, fm.fpioa.UART1_TX, force=True)
fm.register(9, fm.fpioa.UART1_RX, force=True)
def sending_data(cx,cy,ch):
global uart;
#frame=[0x2C,18,cx%0xff,int(cx/0xff),cy%0xff,int(cy/0xff),0x5B];
#data = bytearray(frame)
data = ustruct.pack("<bbhhhb", #格式为俩个字符俩个短整型(2字节)
0x2C, #帧头1
0x12, #帧头2
int

博客介绍了在MaixPY环境下,针对K210芯片如何通过串口进行十六位数据通信。通过定义`sending_data`函数,将数据打包成指定格式的字节并利用UART进行发送。同时展示了单片机端的数据解析代码,接收并处理这些字节数据。此博客内容涉及嵌入式硬件通信和数据处理。
最低0.47元/天 解锁文章
1万+





