关于OpenMV与STM32F407单片机的通讯方法,及其避坑要点

本次采用STM32F407VET6单片机,为了适用性和方便移植,选购嘉立创梁山派天空星,并且采用hal库以及使用cubemx进行单片机的初始时钟外设配置,为了便于名词识别,即以下称STM32F407VET6单片机为:“天空星”OpenMV为“相机”

由于该天空星拥有14个时钟外设,多达6组串口等,至高168Mhz时钟,单片机内部集成单双精度浮点运算单元fpu,512KB的Flash,非常适合中型的项目开发。

进入cubemx,新建一个STM32F407VET6的空白工程,接着,进入RCC栏,选择高速时钟振荡器未外部时钟,我们进入时钟界面,由于天空星的板载晶振为8M,于是我们需要手动修改OSC-IN处为“8”,修改总线时钟为168MHZ点击回车,cube会自动计算并修改设置各总线,及其PLL锁相环和倍频器的参数,此时,天空星各外设,总线,时钟等均达到最大运行频率。

接下来配置串口外设,在connect栏选择uart1,打开外设,即配置成异步通信模式,波特率设置为115200,8为数据位,没有奇偶校验等,中断栏,打开接收中断,不需要配置中断优先级,串口配置完成。

在cubemx项目设置中,记得需要勾选配置标准工程,按需将库复制工程文件夹,为用户生成.h和.c文件夹(便于分类),并且选择生成keil5版本V5.71的工程文件(取决于编译器)。

生成工程代码,进入keil5设置烧录器为Jlink,设置擦除和烧录。设置工程文件,使用microlib,开启单精度浮点运算单元fpu

接着配置相机,相机使用micropython编程,可以理解为Python的简化版,大部分基本语法通用,小部分有差异。使用openmv的官方IDE进行程序配置。配置过程大同小异,可以参考星瞳科技官方openmv的配置方法。

下面节选相机的串口配置方法

首先,保证导入了uart库,和fpga库。接着,使用fpga语法对引脚进行注册,设置gpio20为tx引脚,gpio21为rx引脚,对串口进行参数配置,和单片机中的配置相同,波特率115200等。

天空星和相机之间的通讯方法

设备与设备直接的串口通讯,首先需要保证双方设备的串口ttl电平是否相同,若ttl电平不同这将导致设备之间无法通讯,这就需要用到ttl电平转换器。

接着,设备与设备之间通过发送和接收数据包通讯,这就需要我们定义一个数据包格式,一方发送打包好数据的数据包,另一方对数据包进行解包,取出其中的数据。

于是我们决定定义一个数据帧,它由两个帧头一个帧尾,及其中间的数据组成,帧头采用0xAB, 0xCD帧尾采用0xAD,之所以这样,是因为串口每接收到一字节数据时,就会出发串口中断回调函数,并执行函数体内的内容,我们需要在函数体内检测判断什么时候接收到了帧头,与帧尾,并将中间的数据从数据接收缓冲数组中取出,存入到RAM中的其他变量提供给其他模块使用。

具体代码明天再肝。。。。。。

 

 

 

 

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值