这篇文章是Robomaster C板初体验的擦屁股篇,但是还没有写完,估计还有好几篇。
第一个是PWM点灯大法:
占空比的设计
在MX里面的PWM通道的设计
这个是具体的参数设置
时钟使用是APB1
蜂鸣器的参数提前要在宏定义里面限制一下
在while之前的初始化
蜂鸣器的打开和关闭需要在另外一个函数里面打开
如果这个数据结构是外面定义的,记得extern,第一个是预设定时器的新值,第二个函数是TIM的通道以及比较寄存器的初值。
响的时候传进去的参数
程序的框图
在keli里面的path
调试的口子,这里我写错了
在所有的引脚下面都ESD保护了
一些适用的场景
原理图的内部结构
应用的时候都接在回地的回路上面就行
这个是C型的电源树,原理图
说明书
看这个下一级,其实就包括了电机的电源
完整的主供电
这个就是5V的链路
和参考电路一模一样
布线
应该如何使用带有模拟地 (AGND) 和电源地 (PGND) 的开关稳压器?
这是许多设计开关电源的开发人员提出的问题。一些开发人员习惯于处理数字 GND 和模拟 GND;然而,当涉及到电源 GND 时,他们的经验常常让他们失望。然后,设计人员经常复制所选开关稳压器的电路板布局,然后不再考虑这个问题。 PGND 是流过较高脉冲电流的接地连接。根据开关稳压器拓扑,这意味着通过功率晶体管的电流或功率驱动级的脉冲电流。这对于开关控制器(例如具有外部电源开关)的情况尤其重要。 AGND,有时称为 SGND(信号地),是其他通常非常平静的信号用作参考的接地连接。这包括调节输出电压所需的内部参考电压。软启动和使能电压也参考 AGND 连接。 由于存在两种不同的技术理念,因此专家们对于这两种接地连接的处理也有不同的看法。 根据一种理念,开关稳压器 IC 上的 AGND 和 PGND 连接应在各自引脚旁边相互连接。这使得两个引脚之间的电压偏移保持相对较低。因此,可以保护开关调节器IC免受干扰甚至损坏。所有电路的接地连接和可能的接地平面都将链接到星形拓扑中的这个公共点。
电路板布局显示在这里。它是一个10A降压微型模块。电路板上单独的接地连接彼此相邻连接(参见图中的蓝色椭圆形)。由于硅片与外壳之间各自焊线的寄生电感,以及各自引脚的电感,PGND和AGND已经有一定程度的去耦,导致电路之间的相互干扰量很小在硅上。 另一种理念涉及将电路板上的 AGND 和 PGND 额外分离成两个单独的接地层,并在一点上相互连接。通过这种连接,干扰信号(电压偏移)大部分保留在 PGND 区域中,而 AGND 区域中的电压保持非常平静,并且与 PGND 很好地解耦。然而,其缺点是,根据脉冲电流的瞬变和电流强度,各个引脚上的 PGND 和 AGND 之间可能存在显着的电压偏移。这可能导致开关稳压器 IC 功能异常,甚至损坏。下图显示了这一理念的实现。
分开连接
然后就是马总发了个好玩的:
一块走的快让我迷茫的板子
原来是乐天派的机器人
早年这个EMO是ESP32做的,9美元的零头都能买三块ESP32
蚌湖住了
让上面的PWM接口输出一下:
原理图的连接是这样的
TIM8
TIM1
PWM 占空比最小为 500/20000 即 2.5%,对应高电平时间为 20ms 乘以 2.5%等于 0.5ms,最大为 2000/20000 即 10%,对应高电平时间20ms 乘以 10%等于 2ms。
先开启总的定时器,然后在打开里面的通道
后面操作的捕获寄存器,为什么是宏呢?这里写的是为了历史的遗留
其实实现的时候也是在这里
参数
具体的意思
按键电路
在这里
选一个感知的引脚
设置一下触发
所有地方的中断全都打开了
函数签名
这个就是在it文件的中断口
在响应以后会跳转到这里,判断引脚的真实情况
接着就是到了回调的函数口,这里是弱定义,还是看自己的实现
如果是按键响应了,就看看标志位
这些就是我们所有用到的引脚
这个函数是读取一个引脚的状态的
返回的就是头文件这些
上面的是后台程序,就是简单的知道按键有没有动
真实的逻辑是这样的:
知道引脚的这个状态
然后就是等一会儿
dji用的是Tek的示波器
采样是比较简单的一步,而比较与转换的方法,STM32 采用的是逐次逼近法,在STM32F4中是12位逐次逼近型ADC (SAR-ADC) ,下面以一个信号在3位逼近法中的比较过程为例讲解比较过程 首先你要知道的是,在3位逼近法中,可以认为ADC在未转换之前的值是一个3位二进制数,这3位二进制数字存储的数值取决于这3位比较的出来的值:
采样到模拟信号的值之后: 1.首先与内部参考电压 Vref 的 1/2 进行比较。发现大于其值,则将第一个标志位记为1;反之为0由于大于 1/2 Vref 值,所以下一个比较的值为 1/2 + 1/4 = 3/4 Vref 2.然后与Verf 的 3/4 进行比较。发现小于其值,则将第二个标志位记为0由于小于 3/4 Vref 值,所以下一个比较的值为 3/4 - 1/8 = 5/8 Vref 3.然后与Vref 的 5/8 进行比较。发现小于其值,则将第三个标志位记为0 所以输出的的结果为100,其对照的结果为 1/2 Vref。如果是12位逼近的方法,这样的过程需要经过12次,输出一串12位的二进制数,然后转化为数值,其完整流程如下:
一般 ADC 的位数越多则转换精度越高,但与此同时转换的速度也会变慢。此外,STM32 内部有一个校准电压VREFINT ,电压为1.2 V,当供电电压不为 3.3 V,可以使用内部的 VREFINT 通道采集1.2 V电压作为 Vref,以提高精度。
这个是DJI的文档
在开发板中有一个用于读取电池电压使用的电阻分压电路。由于电池提供的电源是24 V的高电压,而单片机引脚的耐压只有0~3.3 V,所以需要通过分压电路进行处理,并使用滤波和二极管限幅电路进行保护。
管球它,拼拼凑凑的就可以看了
输入的电压范围是这样的
时钟
在MX里面的设置
今天有事情,写不完了,跑了。
DJI的文档也是抄的别人的,,,没事,我也抄。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !