当前位置: 首页 > news >正文

网站建设哪里好薇传媒宣传片制作

网站建设哪里好薇,传媒宣传片制作,东莞网络公司哪家好,龙华、宝安最新通告目录 前言: 一、K210 串口部分教程 二、STM32部分 前言: 很多打比赛的同学,通常只是用K210 或者openMV来进行视觉部分的信息采集,传输数据给STM32(或者其他主控那边)进行对分析,对小车或者舵…

目录

前言:

一、K210 串口部分教程

二、STM32部分


前言:

       很多打比赛的同学,通常只是用K210 或者openMV来进行视觉部分的信息采集,传输数据给STM32(或者其他主控那边)进行对分析,对小车或者舵机等其他模块进行相对应控制,比较少的同学是K210 当成一块开发板使用(因为它也有很多外设),那么此篇文章就讲述如何进行K210 与STM32 进行通信(openMV也是一样)

一、K210 串口部分教程

 经过资料找到Maix bit(K210)有3个串口,而且引脚不是固定的,可以根据自己对板子资源的利用,对引脚进行合理的分配,对引脚进行重映射,配置我们想要的引脚为TX、RX。

下面是引脚配置以及串口初始化

from machine import UART
from fpioa_manager import fmfm.register(6, fm.fpioa.UART1_TX, force=True)
fm.register(7, fm.fpioa.UART1_RX, force=True)
uart = UART(UART.UART1, 115200, 8, 0, 0, timeout=1000, read_buf_len=4096)

代码解析:

from machine import UART

 从 machine 模块导入 UART 类。这个类提供了串行通信的功能。

 

from fpioa_manager import fm

从 fpioa_manager 模块导入 fm 对象。fpioa_manager 是用于管理 FPIOA(Field Programmable Input/Output Array)的模块,它允许你将特定的功能映射到 GPIO(通用输入输出)引脚上。

fm.register(6, fm.fpioa.UART1_TX, force=True)


这行代码将 GPIO 引脚编号 6 映射为 UART1 的发送(TX)引脚。force=True 参数表示强制覆盖之前的映射设置。

fm.register(7, fm.fpioa.UART1_RX, force=True)

这行代码将 GPIO 引脚编号 7 映射为 UART1 的接收(RX)引脚。同样,force=True 参数表示强制覆盖之前的映射设置。

uart = UART(UART.UART1, 115200, 8, 0, 0, timeout=1000, read_buf_len=4096)

创建一个 UART 实例,用于初始化 UART 通信。
UART.UART1:指定使用 UART1。
115200:设置波特率为 115200,这是数据传输的速率,单位是比特每秒。
8:设置数据位为 8 位。
0:设置停止位为 1 位(因为传入的是 0,这里可能是一个错误,通常停止位应该是 1)。
0:设置无奇偶校验位。
timeout=1000:设置超时时间为 1000 毫秒,这意味着如果在这段时间内没有接收到数据,UART 将停止等待。
read_buf_len=4096:设置接收缓冲区的长度为 4096 字节,这是 UART 可以存储的接收数据的最大量。

K210 串口发送数据

uart.write(write_str)

 uart:串口初始化赋值的对象

 write_str:想要发送的数据

数据类型可以是:

1.字符串(str):Python 中的字符串可以被编码成字节序列,然后通过 UART 发送。通常使用 UTF-8 编码,但也可以指定其他编码方式。
2.字节序列(bytes 或 bytearray):这些是已经编码的字节序列,可以直接发送。
3.数字(int 或 float):数字需要先被转换为字节序列。通常使用 struct 模块来打包数字,因为不同的系统可能有不同的字节序(大端或小端)。
4.结构化数据:可以使用 struct 模块将复杂的数据结构打包成字节序列,然后再发送。

 例如:发送一个'utf-8'类型的字符串

uart.write(write_str.encode('utf-8'))  # 使用 UTF-8 编码字符串

串口接收数据:

data = uart.read(2)

 这句话就是串口接收2个数据,通常可以拿来判断并执行指定功能;如下:

data = uart.read(2)if data!=None:if data == b'A':save = 0  #不存到SD卡中elif data == b'B':save = 1  #存到SD卡中

read_str = read_data.decode('utf-8')

 这句话就是串口接收'utf-8'类型的字符串

那么,在知道怎么发送数据的函数,现在就是要使用K210 发送数据给STM32 那边

要使用uart.write() 函数吗,NO!有更好的方法,就是将数据打包发送,不然用uart.write()一个一个发太麻烦了

那么怎么发送数据包呢?

首先导入ustruct库

import ustruct

 打包函数:

ustruct.pack

ustruct.pack 函数用于将 Python 数据类型打包成字节流。这在需要通过串行通信发送二进制数据时非常有用。ustruct 模块提供了与 C 语言中的 struct 类似的功能,允许你指定数据的格式并将其打包成二进制形式。如下:

data1 = ustruct.pack("<bBBBb", 0xFF,0XAA,0xBB,0XCC,0xFE)
uart.write(data1)

 功能:打包5个char(B)类型(类型可以自己决定)的数据赋值给data1 ,并发送出去,通常可以把0XFF、0XFE作为包头包尾在STM32进行接收开始和完成判断,中间3个数据(0XAA,BB,CC----随便写的)就是我们要发送stm32的数据(至于是什么数据就是自己更改,个数也可以是改"<BBBBBB(改这里,几个数据就再加几个B))

B、b代表数据类型,还有下面其他类型:

b:有符号字节(char)
B:无符号字节(unsigned char)
h:有符号短整型(short)
H:无符号短整型(unsigned short)
i:有符号整型(int)
I:无符号整型(unsigned int)
l:有符号长整型(long)
L:无符号长整型(unsigned long)
q:有符号长整型(long long)
Q:无符号长整型(unsigned long long)
f:单精度浮点数(float)
d:双精度浮点数(double)

最后:K210 代码串口发送数据部分就是怎样打包一起发送给STM32那边

二、STM32部分

 代码接收部分展示:

uint8_t Serial_RxPacket[3];       //数据包长度3,只存发送或接受的载荷数据,不存包头包尾
unsigned char K210_data[3];
void USART2_IRQHandler(void)
{u8 Res;static uint8_t RxState = 0;//静态变量只能在本函数使用static uint8_t pRxPacket = 0;if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET){Res =USART_ReceiveData(USART2);//(USART1->DR);	//读取接收到的数据if (RxState == 0)//矩形包头{if (Res == 0xFF){RxState = 1;pRxPacket = 0;}		}else if (RxState == 1)//矩形数据{Serial_RxPacket[pRxPacket] = Res;pRxPacket ++;if (pRxPacket >= 3){RxState = 2;}}else if (RxState == 2)//矩形数据  包尾{if (Res == 0xFE)//说明收到包头{//LED0 = !LED0;K210_data[0] = Serial_RxPacket[0];K210_data[1] = Serial_RxPacket[1];	K210_data[2] = Serial_RxPacket[2];	}else//接收错误,全部清0{Serial_RxPacket[0]=0;Serial_RxPacket[1]=0;	Serial_RxPacket[2]=0;	RxState = 0;						}}USART_ClearITPendingBit(USART2, USART_IT_RXNE);//清除标志位		}
}

 解释:使用状态机方法对包头0XFF和包尾0XFE进行判断,说明K210 那边发来数据了,使用STM32定义的变量char K210_data[3]将数据存储下来,用来STM32这边数据分析,然后实现指定功能操作。

 总结:以上就是K210 与STM32 串口通信的教程,不理解的欢迎评论区讨论

http://www.yayakq.cn/news/829451/

相关文章:

  • 南海桂城城乡建设局官方网站做网站宜宾
  • 河北世达建设集团有限公司网站如何创建一个
  • 网站的实施方案深圳营销型网站建设优化
  • 做电商网站价格表网站采集信息怎么做
  • 外贸网站联系方式模板免费在网站做博客
  • 陕西启康建设有限公司网站十大免费建站程序wordpress
  • 最好的网站制作公司东营市建设管理局
  • 免费网站注册域名简单响应式网站
  • 黄冈网站广西建设网站网址多少
  • 佛山网站排名成都网站建设 天空在线
  • 电子商务网站建设摘要旅游网页制作公司印章
  • 小说网站建设方案书ppt模板网络营销公司哪家服务好
  • 官网的建站过程wordpress开发难吗
  • 电子商务网站建设与管理课程的目的企业管理系统项目简介
  • dede大气黑色网站源码天津建设银行官网站
  • 城建设投资公司网站上海公司注册查询官网
  • 网站建设最便宜建站交流
  • asp.net 手机网站开发如何提高网站的搜索
  • 阿里巴巴做网站需要多少钱秦皇岛房管局备案查询网
  • 浦口建设局网站网络工程师含金量高吗
  • 智能建站工具早期电商平台有哪些
  • 网站怎么做安全wordpress 无法连接到ftp服务器
  • 网站毕设fifa最新排名出炉
  • 江苏建设人才网官方网站网站建设列表网
  • 怎么做直播网站刷弹幕南昌地宝网出租房信息
  • 网站建设项目安排计划表wordpress 自定义参数
  • 沧州市建设局网站开封网站建设哪家好
  • 潍坊知名网站建设最新报价员工入职 在哪个网站做招工
  • 站长工具ip地址查询施工企业资质证书哪里下载
  • 青岛网站建设公司好找吗seo二级目录