- 博客(111)
- 资源 (25)
- 问答 (2)
- 收藏
- 关注
原创 6轴并联机器人的拖动示教功能
6轴并联机器人的拖动示教功能,人工操作操作一次,机器人重复千万次,省去大量人工重复作业,机器替代人工是未来的趋势,机器人的开发已接近尾声,未来可期。#6轴并联机器人 #6轴机器人 #并联机器人 6轴并联机器人的拖动示教功能,人工操作一 ...
2022-05-20 11:06:52 940
原创 嵌入式开发--STM32用HAL库硬件I2C读取MPU6050的数据
MPU6050是一款6轴传感器,可检测3轴位移和3轴加速度,MCU可通过I2C接口操作。注意接口线需要上拉电阻,一般为10K,在距离远或干扰强的场合,可降低通讯速率,和适当减小电阻值,比如4.7K。
2024-10-21 08:45:00 1242
原创 嵌入式开发--STM32延时函数重构
最前面的__weak表明它是一个弱函数,也就是说我们可以自己编程来实现它,把喂狗的功能集成到这个函数内,从外部看,仍然用的是HAL_Delay()这个函数名,代码风格可以和HAL库保持一致。在做嵌入式开发的时候,经常需要用到延时函数,STM32为我们提供了一个标准的毫秒级延时函数:HAL_Delay()。这样当然可以运行,但是不完美,比如在程序调试的时候,我们经常需要关闭看门狗,还有就是这样一来延时会很不准确,特别是系统频繁要进中断的话,实际延时会比预期长不少。这样就几乎不用再操心喂狗的事了。
2024-09-20 18:02:06 537
原创 嵌入式开发--STM32G030C8T6,写片上FLASH死机CFGBSY和写入出错
G0系列,写片上FLASH时,经常死机,而且按复位键都没用,属于不断电都救不回来的那种死法。这种情况一般是由硬件置位了某个标志导致,只有断电才能故障复原。
2024-08-16 14:56:22 671
原创 嵌入式开发--STM32的GPIO输入和输出复用
MCU的引脚数量非常有限,做项目时,经常是为了成本而选择引脚尽量少的芯片,这也给布线和编程带来更大的挑战。最近一个项目,需要在某些时候通过拨码开关预置参数,预置完成后,在正式工作时,该引脚又处于输出状态,驱动很多的其他设备。这时,使用IO引脚扩展是一个办法,但是会增加成本,还有一个更好的办法,就是引脚的输入和输出复用。简单的说,就是在上电时将目标引脚设置为输入状态,以读取拨码开关的状态。设置完成后,拨码开关复位,再将引脚设置为输出状态即可。
2024-08-13 11:17:45 505
原创 西门子PLC1200--与电脑连接的TCP通讯
本例演示将PLC作为服务器,电脑作为客户端,进行通讯。反过来也是一回事,就不啰嗦了。二者进行TCP通讯,是基于网线的,电脑上用的是网口,PLC上用的是Profinet接口,即PN口。
2024-06-19 17:21:19 5037 2
原创 嵌入式开发--stm32cubeprogrammer写入选项字节
输入以下命令,后面的0xBB表示选项字节是bb,表示读保护,也可以按需要写其他的字符。然后会出现新行,第2个箭头n:后面的数字是即将开始的下一个。将仿真器插上新板子,可以开始下一个板子的烧写,也就是量产。第1个箭头n:后面的数字是已完成的数量。最下面的信息框中,会有量产的数量记录。然后就可以通过插上仿真器开始量产,在下载页面,勾选选项字节命令,然后点右下角的开始自动化模式。在需要的功能前打上勾,即可。此时拔下仿真器插头即可。
2024-05-31 14:58:38 277
原创 嵌入式开发--获取STM32产品系列的信息
有时候我们需要知道当前MCU是STM32的哪一个系列,这当然可以从外部丝印看出来,但是运行在内部的软件如何知道呢?ST为我们提供了一个接口,F1和G4系列地址统一为:0xE004 2000,需要以32位方式读取。H7系列的地址是0x10006450对于F1系列,该说明如下:对于G4系列,说明如下:例如我读取的内容如下图,对应的就是再去查看后面蓝色标识的表格如下:是属于第2类设备,容量是128KB但如果读出来的是第3类设备呢,有那么多型号。
2024-03-21 15:52:33 720
原创 嵌入式开发--Keil MDK仿真时System Viewer不显示寄存器选项
可我的工程如下图,在View下拉菜单中的System Viewer内,不显示寄存器选项。
2024-02-20 09:39:44 1442
原创 嵌入式开发--STM32G4系列片上FLASH的读写
写完烧录开始调试,发现问题了,有时能写入,有时不能写入。先找了正点原子的例程来做参考,他的可以写入,但原子的例程是操作寄存器进行读写的,不直观,移植性也不好,个人还是喜欢用HAL库的方式来做东西,于是作罢。然后又找了ST的例程来看,刚好手上有一块G4的开发板,于是编译,报错,可能是我的开发环境比较新,与ST官方的编译环境不同,又是一通折腾,编译通过,但一加载调试,就卡死不动。于是新建工程,再把ST的例程移植到我的工程中,编译通过,可以调试,还是有时能写有时不能写。又回到了起点。
2024-01-17 17:28:11 2924 5
原创 嵌入式开发--赛普拉斯cypress的铁电存储器FM25CL64B
FM25CL64B是赛普拉斯cypress出品的一款铁电存储器,这种存储器最大的优势是可以像RAM一样随机存储,和按字节写入,也可以像ROM一样掉电仍然可以保存数据,是一种相当优秀的新型存储器,但是容量不能做得很大,只适合保存一些重要数据。重要参数及解读如下:64K位,即8K字节100T的读写次数,这意味着即使对于同一单元,每毫秒读取或写入一次,也需要3170年才能消耗完这个次数,而我们对存储器的访问几乎不可能达到这样的频率,也不可能只访问一个数据单元,所以它的读写次数寿命虽然有限,但可以不在考
2023-11-19 17:07:15 1592
原创 嵌入式开发:ST-LINK V2.1仿真器,Type-C接口
之前做的版本虽然也是V2.1的,但使用的接口是USB的Micro形式,不支持正反插,也不兼容现在通用的手机数据线,出差的时候又要多带一条线。现在终于把我的ST-LINK的接口改了一下如下图自带信仰加持,神灵保佑一遍调通。主芯片是STM32F103CBT6,很好买。具体的调试和使用,见我之前的另一篇文章,里面讲的很详细,这次仅仅是更新了硬件接口,其他的都没有变化。
2023-11-10 15:05:43 866
原创 嵌入式开发--CubeMX最新版本6.9.0的问题
刚刚将CubeMX升级到最新版本,发现一个问题,他会将你自己在Keil中所添加的支持包等等一系列操作全部删除,变成一个空工程的状态。但是,如果在CubeMX中再次生成工程,就会变成下图的状态。如下,是我做好相关设置后的KEIL工程截图。以前的版本从来没有出现这种问题。
2023-07-25 09:49:02 799 2
原创 嵌入式开发--STM32用DMA+IDLE中断方式串口接收不定长数据
IDLE顾名思义,就是空闲的意思,即当监测到串口空闲超过1个串口的数据帧时,会使状态寄存器(SR或ISR)的IDLE位置位,如果此时控制寄存器(CR或CR1)的IDLEIE为1,则会触发IDLE中断。DMA搬运数据,则是一边接收数据,一边将串口接收到的数据搬运到内存中,这个过程不需要MCU参与,等到IDLE中断到来的时候,直接去内存中取数据即可。DMA中断在CubeMX中是默认开启的,可以手动将其关闭,等IDLE中断到来的时候,直接操作读取数据即可。
2023-07-17 08:25:37 1883
原创 嵌入式开发--XW09A触摸芯片的使用
XW09A是厦门市芯网电子科技有限公司出品的一颗触摸芯片,支持9键多点触摸,I2C接口,带中断引脚。以下摘抄自芯片手册极高的灵敏度,可穿透13mm 的玻璃,感应到手指的触摸超强的抗干扰和ESD 能力,不加任何器件即可通过人体8000v 实验外围电路简单,最少只需一个4.7nf 电容,芯片即可正常工作外围寄生电容自动校正工作电压范围:2.5 ~ 5.5 VSOP16 环保封装。
2023-07-08 10:25:18 1323 7
原创 嵌入式开发--无刷电机--样机
刚刚开发的一套伺服系统,foc算法,svpwm控制,还需要进一步完善功能 #无刷 #伺服 #bldc #foc。刚刚把原理样机做出来,后面的工作就是电路板小型化,控成本。嵌入式开发–无刷电机–样机。
2023-05-04 20:27:08 249 1
原创 嵌入式开发--无刷电机学习4--SVPWM
这张图是基于α和β坐标系,也就是定子磁场坐标系,图中的Uout就是定子磁场的空间矢量,它的角度表示定子线圈产生磁场的方向,长度表示磁场的强度,以电机匀速旋转为例,FOC控制的目标就是让这个矢量的长度保持不变,角度匀速变化。图上以60度为间隔,划分了6个区,其意义类似于6步换向,也就是在不同的区域,相应的开启或关闭相应的驱动桥的上下臂,以及上下臂的导通时间,来实现的。
2023-05-02 17:32:38 1289
原创 嵌入式开发--无刷电机学习3--帕克变换
前面说到克拉克变换的物理意义,是将三相定子线圈产生磁场的过程,等效为2个正交放置的线圈,来产生同样的磁场。通过控制这两个正交线圈即可等效控制三相定子线圈。还有一个问题,定子线圈产生的磁场,如果与转子位置不匹配就成了开环控制了,显然我们需要与转子的位置对应起来控制,这个过程也叫闭环控制。也就是不断的读取转子的位置,并根据这个位置,实时的给出当前所需要驱动磁场方向和强度。定子磁场坐标是一定的,也就是我们之前说到的定子坐标系,和Ia-Iβ坐标系。而转子的磁场是一直在旋转,这个叫转子坐标系。
2023-05-02 07:47:27 2555
原创 嵌入式开发--无刷电机学习2--克拉克变换
首先说明,有很多方法,在数学上是等价的,比如3+3+3+3=3*4=12。下面说的事情也是。为了更简明的控制,克拉克女士提出电机控制简化的方法,即建立一个坐标系,横轴是α 纵轴是β,并将三相电流在这个坐标轴上投影,用两个正交分布的投影代替。并描述二者之间的关系,从而得出任意时刻的iα和iβ。其物理意义是用两个正交分布的线圈(分别放在α轴和β轴上),去模拟三相电机120度分布的三个线圈。这二者在数学上是等价的。如此可以简化控制流程。在实际驱动电机的时候,只需要求一个逆解即可驱动电机。
2023-05-01 08:30:00 3750
原创 嵌入式开发--无刷电机学习1--FOC简介
普通直流电机(DC MOTOR)的驱动是碳刷换向,能看到这篇文章的朋友应该不用我再去复述一遍直流电机的工作原理了吧。缺点很明显,存在碳刷换向,换向时会有感生电动势冲击。电机产生的磁场与定子磁场之间的夹角不能保持为0度(或者说180度,是一个意思,以下均用0度表示),驱动力会有波动,也不能产生最大的驱动力矩,也就是能耗高。碳刷换向还会限制电机的使用寿命。优点是结构简单,无驱动电路。针对上述缺点,BLDC无刷直流电机就产生了。有一种改进方式是6步换向,对于1极对电机来说,电机每旋转60度角,霍尔元件产生
2023-04-24 08:00:00 4776
原创 嵌入式开发--STM32片上外设--独立看门狗IWDG
嵌入式开发–STM32片上外设–独立看门狗IWDG。说白话就是单片机可能因为干扰造成工作异常,或软件编写问题错误造成程序跑飞,比如本来应该在程序区取指令,结果由于指针异常,跑到数据区去取指令。或者反过来。可想而知程序执行会有意料不到的后果。于是我们设置一个硬件机制,必须在固定的时间间隔内,对某种硬件电路发送信号,如果超过这个时间间隔,该硬件电路会将单片机复位,使得程序重新执行。如此增加了系统的可靠性。这个硬件机制就叫看门狗。发送信号叫喂狗。一旦超时狗会叫,单片机会复位。
2023-04-09 16:17:26 911
原创 嵌入式开发--CAN总线与高速光耦6N137
CAN总线应用时,有时候需要加光耦隔离电路,以免在雷击或遇到高压干扰时,保护设备安全。常用的有光耦隔离和专用芯片隔离。本文介绍使用高速光耦6N137的光耦隔离方案。6N137是10MBPS的高速光耦,而CAN总线的最高速度仅为1MBPS,用在此处绰绰有余。6N137等效电路如下:1,4脚空闲,2,3脚是输入侧,接发光二极管5脚接地6脚输出7脚为使能端8脚接电源。
2023-03-21 16:11:39 5528 22
原创 嵌入式开发--Altium获得布线长度
在PCB布线时,有可能需要知道某一段线的长度。AltiumDesigner就提供了这个功能。红框处就是该网络的布线长度,下面还有其他相关信息,列出了节点名称,以及每一段的长度等。嵌入式开发–AltiumDesigner获得布线长度。需要按下图打开这个设置,视图–>面板–>PCB。然后点击左下角的PCB选项卡,以调出PCB界面。
2023-03-13 09:00:00 888
原创 嵌入式开发--STM32H750VBT6开发中,新版本CubeMX的时钟问题,不能设置到最高速度480MHZ
之前开发的项目,开发环境是CubeMX6.6.1,H7系列的支持包版本是1.10.0。跑得没问题,最近需要对项目做修改,同时我的CubeMX也已经升级到最新的6.7.0,H7系列支持包版本升级到最新的1.11.0。在CubeMX中做了一些修改以后,发现时钟不对了,无法将主时钟频率设置为480M,软件提示D1CPRE时钟要小于200M,如下图:如果将上图箭头处的D1CPRE改为240M,则会出现下图的报错,软件提示DIVP1的时钟不能大于300MHZ,
2023-03-01 16:24:41 3915 13
原创 Python opencv进行矩形识别
图像识别中,圆形和矩形识别是最常用的两种,本例讲解矩形识别,最后的结果是可以识别出圆心,4个顶点,如下图:左边是原始图像,右边是识别结果,在我i5 10400的CPU上,执行时间不到8ms。识别出结果后,计算任意3个顶点的彼此距离,共3个数据,其中数值最小值对应的2个顶点是短边,数值最大的2个顶点对应矩形的对角线,中间那个值的矩形的长边。如果是正方形,则最小值和中间值相等。知道了长边的2个点,也就很容易求得矩形的旋转方向,在机器人捡拾物品的过程中,也就知道了末端执行器的旋转角度值。
2023-02-23 18:43:16 5851 2
原创 Python opencv进行圆形识别(圆检测)
圆形识别(圆检测)是图像识别中很常见的一种处理方式,最核心的是cv2.HoughCircles这个函数实现的圆形检测。
2023-02-20 09:00:00 25933
原创 杂谈--口腔溃疡怎么办
本人35岁以前严重口腔溃疡,基本上是一发就是疼2周,然后歇个一两天又开始继发。更多时候是旧的没好,新的又来。这个毛病吧,虽然不是大事,但吃东西,咽口水,甚至说话都会疼痛。药没少吃,办法也没少想,都不管用。直到偶然的一天,回想起又一次发口腔溃疡,似乎最近几天水喝得少,于是刻意的大量补水。3天后溃疡消失。之后多次总结经验,发现一旦边连续3天水喝得少的话,第4天必然口腔溃疡,溃疡之后连续3,4天大量补水,溃疡必好。平常水喝得够的话,不会发溃疡。
2023-01-24 16:11:03 192
原创 机械--UG NX2007改变零件的默认颜色
UG(现在的新版本叫NX,但一般人仍然沿用UG的叫法,下同),新建零件时,零件的默认颜色是橙色的,个人很不喜欢。当然,实体化以后,可以改变它的颜色,选中实体以后,按下Ctrl+J,可以在弹出菜单中改变颜色。此时需要提供管理员权限。其实有一劳永逸的办法,就是改变默认设置,以后每次新建物体都会是你设置的颜色了。文件–首选项–对象,然后在弹出菜单中点击颜色下拉菜单,选择实体,如下图。关掉UG,再次打开,新建一个文件,即可以看到默认颜色改过来了。然后将颜色改为你喜欢的颜色,我喜欢这种蓝色,比较有科技感。
2023-01-12 10:31:58 2515
原创 杂谈,前进的路上
有很多机会半途而废,但是他们没有!但是我想我明白了,我现在明白了,但是最后就连黑暗也会消失。太阳也会散发更明亮的光芒,纵使你太年轻不明白为什么,就像我们听过的精彩故事,因为怎么可能有快乐结局?这世界怎么可能回到从前?有时候你不想知道结局,这世上一定存在着善良,发生这么多可怕的事,崭新的一天将会来临,这才是让人永生难忘,意义非凡的成人故事,
2023-01-02 20:39:02 449
原创 嵌入式开发--PID控制
讲解PID的文章书籍很多,本文就不详细讲了,只讲一下我在学习过程中不容易理解的一些问题点,以供大家参考。比如很多书籍对于PID,只讲了计算,但是最后计算出来的值如何应用,则完全不讲,当时我是一头雾水,后来搞明白以后又觉得还是很简单的,但如果书籍里面能提一下,那不是让人学习起来容易很多么。PID就是比例,积分,微分三个单词的首字母缩写,是工程上控制系统中的一个常用控制算法。以下结合我之前做过的一个温度控制的项目来介绍PID。用的是当时保留下来的一些调试图片,供参考。PID有两种控制方式,增量式和位置式,二
2022-12-26 09:00:00 1855 1
原创 新冠感染后,我的痊愈过程
我也阳了,最近一个多月,小区都没有出,要说出家门,也就是去楼下收快递和拿菜,戴的是普通口罩,还是中招了,不得不说奥密克戎的传染性实在太强了。唯一用药是布洛芬,是在重庆最后一轮封控前在京东下的单,历经10多天快递才送来,还好没耽误。布洛芬我买的是芬必得的,原研药厂家。所有药都强烈建议买原研厂家的,纯度高,副作用小,因为人家研究得比较透彻,仿制药厂家生产的,在药效上要打个折扣。虽然原研药要贵一些,但个人觉得值
2022-12-15 11:54:42 804
原创 嵌入式开发-STM32硬件SPI驱动TFT屏
现在的TFT屏幕已经很便宜了,65536色屏幕,2.8英寸,分辨率320X240的液晶屏才20元,我为了图省事,多配了一个转接板12元,共32元包邮到家,真是香。上面这个是这次用到的2.8寸TFT屏幕(20元),下面的是0.96寸OLED屏(10元),可见尺寸的巨大差别。当然OLED屏的优势是省电,在手持设备上是首选。这个屏幕是SPI接口,最少4线驱动,分别是MOSI数据,CLK时钟,CS片选,DC数据/指令切换,还有2根线可选,是RESET和背光,复位可以用电阻电容上电时拉一下跳变即可,背光可以一直接
2022-12-12 09:00:00 4205
原创 嵌入式开发--RS-485通讯的问题
RS-485一般简称485总线,是最常用的工业总线之一,一般采用2线的半双工模式,用差分方式收发信息。最高速度可达10M BPS。单片机使用485总线时,是用UART或USART接口,通过RS-485收发器完成信号的输入和输出。常用的芯片有MAX485,MAX3485,SP3485等等。硬件很简单,RO和DI连接到单片机的UART接口,是数据的收发引脚,RE和DE连通,接到单片机的GPIO,以控制数据流的方向,是输入还是输出。连接到UART2,具体设置如下:这些参数需要根据你的设置要求进行,异步模式
2022-12-06 19:59:28 3165
原创 嵌入式开发--Altium技巧:原理图设置和布线前的检查
在工程上点右键,并在弹出的菜单上选择最后一项:Project Options,即项目设置。弹出如下界面,如果操作不当,设置错了,可以点击左下的按键,设置成安装缺省,恢复默认设置。2 Floating net labels 未接入的网络,如下图PB0。可以双击Message窗口中的每一项报告,如第1个,就违背了上面的第4条规则,如下图。这几个都是极其重要的错误,一旦忽略,就会造成打版后的错误。Altium的默认设置,有一些是很不合理的选项,强烈建议大家修改。设置好以后按确定键,以保存。
2022-11-29 11:30:05 761
原创 STM32开发时HardFault错误的排查
本篇是一文的扩展。把相关的问题记录一下,给遇到HardFault_Handler问题的朋友做个参考。
2022-11-21 14:52:07 2100
原创 嵌入式开发-STM32硬件I2C驱动OLED屏
坊间流传STM32的硬件I2C很容易死机,所以不能使用硬件I2C,正点原子也在教程中强调了这一点。个人猜想由于Philips拥有专利,而ST为了绕开专利,而将硬件I2C弄得异常复杂(从相关的寄存器数量及设置可见一斑),造成硬件I2C很是难用,也容易出现异常死机。今天我就来挑战一下。尝试使用STM32F103C8T6用硬件I2C的方式来驱动OLED屏。
2022-11-07 11:47:42 8210 2
altium适用的m.2接口封装, MKey的插头和插座部分
2020-12-03
Keil.STM32MP1xx_DFP.1.3.0.rar|Keil.STM32MP1xx_DFP.1.3.0.rar
2020-09-16
Keil.STM32L5xx_DFP.1.2.0.rar
2020-09-16
Keil.STM32L1xx_DFP.1.3.0.rar
2020-09-16
Keil.STM32H7xx_DFP.2.6.0.rar
2020-09-16
Keil.STM32L0xx_DFP.2.1.0.rar
2020-09-16
Keil.STM32G4xx_DFP.1.2.0.rar
2020-09-16
ST-Link V2.1,带串口,可自动更新固件,含全套资料下载
2020-08-30
Keil.STM32H7xx_DFP.2.5.0.rar
2020-08-04
Keil MDK5 暗黑配色方案第2版,将中部的区域也调成了暗黑底色,重启生效
2020-08-04
++Keil MDK5暗黑配色方案.rar
2020-02-15
Keil.STM32G0xx_DFP.1.2.0.rar
2019-12-14
单反相机的JPG和RAW文件同步删除
2016-12-25
STM32G4系列片上FLASH读写函数
2024-01-20
ST-Link V2.1版本,用的是Type-C接口
2023-11-10
BUSMASTER V3.2.2带了CANTACT的版本,适合自制PCAN的上位机软件
2023-08-23
基于Keil MDK的STM32H5系列DFP支持包,H5是ST最新的产品系列,基于M33内核
2023-03-16
经典的摄像头测试软件AMCAP 3.0.9
2023-02-12
嵌入式开发,STM32H750VBT6用硬件SPI方式驱动TFT液晶屏
2022-12-08
嵌入式开发-STM32硬件I2C驱动OLED屏
2022-11-07
Keil MDK5 5.36和谐文件
2022-05-10
STM32H750的FDCAN配置
2022-03-30
Keil MDK5 暗黑配色方案第3版,修改TXT文件的配色,重启生效
2022-01-08
自制带串口的J-Link OB 072,含全套资料
2021-03-05
基于RT-THREAD STUDIO的at24cxx组件包读写at24c02
2021-02-09
win10给软件分配的CPU资源越来越少,如何解决
2022-07-26
pycharm调试Python代码,如何将变量显示方式锁定为16进制
2021-01-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人