STM32
文章平均质量分 73
传教士@
渴望真知的农民工
展开
-
插拔232通信线导致串口接收停止(使用DMA)
综上分析,HAL的中断异常处理中会清除DMAR导致DMA停止接口不能执行停止逻辑,以及内部调用的终止接口将状态置为异常状态,以及没有将Rx状态清除,导致重启也无法执行。在HAL库中没有那个接口能够逃过这个状态锁,因此,我们仅能执行重新初始化,将整个串口初始化,才能将这些锁置位。经过重新初始化的尝试,DMA总线重启成功,数据接收也恢复正常。原创 2023-05-22 22:15:03 · 565 阅读 · 0 评论 -
STM32H750串口接收数据出现丢字节以及使用DMA出现内容错误问题
本次的问题主要原因如下:1.外部频繁关闭总中断,导致串口接收中断无法及时收到数据,进而导致出现丢失字节的问题;2.DMA方式会将串口接收的数据自动放到指定的RAM地址中,但是系统开启了D-cache,所以程序中访问的数据并不是实际的RAM中的数值,所以这种非一致性导致软件读取到的内容不是最新的;本次遇到的是接收的问题,同样的分析思路,我们在执行数据发送时是否也会有发送的字节间隔并不是连续的(被关闭总中断影响),那么对方在接收时是否也会出现错误断帧的问题?原创 2023-05-07 21:40:17 · 2708 阅读 · 0 评论 -
TouchGFX曲线控件绘制性能慢问题
到此也就完成了开源部分的全部分析,优化方向大体包括如下:通过循环内存缓存数据,对于新增点直接填充到缓存,不再从Nor中读取;增加画布大小;将通道和曲线以及栅格进行绘制合并;循环内存中还要缓存轮廓的相关数据,避免重复计算;直接打点显存,不再使用画布(这样也就不需要增加画布大小了);原创 2023-03-05 16:25:44 · 399 阅读 · 0 评论 -
STM32 cache使用过程中的风险问题
在 Cortex-M7 内核里面有一个 I-Cache 和一个 D-Cache,它们是实实在在的高速存储器。在实际的使用过程中我们一般为了提高执行性能,我们会同时将I-Cache打开,以提高指令的执行速度,将D-Cache打开,以提高数据的执行速度。本次问题就是以上两个问题相继发生导致的问题,手动触发访问最后一个字节也的确能够触发相同的内核错误。一次偶然的机会,将程序烧写在片外运行时,连续运行2h之后,程序会死机;进入调试,发现当出现死机时,调试器会提示内核错误,导致无法继续调试;原创 2023-02-20 22:01:44 · 504 阅读 · 1 评论 -
STM32边沿检测频率出现较大偏差问题分析(相序检测篇)
相序检测逻辑中的问题可以归结为如下:执行路径异常,结果延时先执行;延时的效果存在1ms的偏差;边沿的识别比较依赖电平判断,对外部的输入信号的波动比较敏感;单次采集不可靠,所以多次采集剔值求均值;原创 2023-02-19 09:45:06 · 721 阅读 · 0 评论 -
STM32边沿检测频率出现较大偏差问题分析(问题描述篇)
一款产品在使用STM32芯片作为主控芯片时,使用一路GPIO最为DI采集,然后通过4051多该输入引脚进行扩展,最终实现相序检测,但是在整机测试的过程中发现如下两个问题点:1.频率会偏大;2.相位差会出现极小以及极大多种异常情况;针对以上问题也进行了整机上的波形测量,的确发现了一些异常波形。原创 2023-02-05 22:32:56 · 482 阅读 · 0 评论 -
Fat32文件系统生成的csv文件显示的日期多出20
本次问题的主要原因如下:1.对Excel软件的自动调整日期功能不熟悉;之前仅知道列宽不足时,会出现#符号,并且之前也曾使用过表格的日期格式,也就是在输入日期时,可以按照格式输入日期,然后表格会按照设定的格式自动进行调整,当时使用时还感觉十分的方便。而此次的问题,就是之前的方便之处所带来的副作用。2.对文件的编码不够熟悉,也不够敏感;原创 2023-01-08 23:10:27 · 672 阅读 · 0 评论 -
STM32后备RAM无法正常使用问题分析
本次问题是首次使用备份RAM,由于对其不够了解,所以不知从何入手,一旦对其进行了解,那么也就算是成功了,本次问题的处理比较简单,大致可以总结成如下代码://使能后备RAM时钟//使能后备域的写(关闭写保护)//使能VBAT调压器//使能后备域的保存功能。原创 2023-01-04 23:43:24 · 1150 阅读 · 0 评论 -
开发TSC2046触摸芯片驱动问题分析(物理、模拟SPI分析阶段)
1.对于一个芯片的驱动开发,尤其是使用SPI或I2C接口的,要仔细研读它的数据手册,2.在遇到问题时,要将问题的表现和特征记录下来,然后绘制问题要因图,然后对问题进行分析,排除无关因素,并对各个因素进行排序,逐个进行验证,验证过程和解决过程要详细记录,这个案例在编写的过程中就深有体会,由于这个问题在解决过程中并没有记录,所以导致在后期整理时,思绪很混乱。3.在编写底层驱动时,不仅仅要考虑当前的驱动性能,还要考虑它的使用场景,然后再决定是使用查询方式还是使用中断方式等。原创 2023-01-03 20:58:31 · 698 阅读 · 6 评论 -
开发TSC2046触摸芯片驱动问题分析(触摸测量值分析阶段)
这一阶段最严重的问题就是一旦发送测量指令(在初始化时连续发送了两个测量指令),就会导致程序死掉(无法响应点击),并且重新烧写程序(不再发送指令),也无法恢复正常工作,只有重新断电再上电,才会恢复正常原创 2022-12-27 09:44:30 · 572 阅读 · 0 评论 -
开发TSC2046触摸芯片驱动问题分析(触摸状态检测分析阶段)
在为电阻触摸板的触摸芯片TSC2046编写驱动代码时遇到了各种问题原创 2022-12-17 20:11:36 · 845 阅读 · 0 评论 -
STM32移植USB驱动到RTX系统无法使用问题(USB分析/终篇)
本次USB移植过程遇到的问题,是由于:1.HAL库中的实现所依赖的一个时钟滴答被RTX占用,而RTX未开源,所以只能在RTX任务中使用RTX留出的os_time;2.USB的工作空间需求比较大,所以需要更大的系统堆栈大小;3.由于RTX内部有使用标准库的malloc进行缓存的申请,而我们移植的USB模块内部也使用了标准库的malloc,而且还是在中断中使用的;4.当前使用的系统中断和USB中断需要调至最高,否则会无法正常运行;原创 2022-12-15 20:55:54 · 398 阅读 · 0 评论 -
STM32移植USB驱动到RTX系统无法使用问题(malloc分析篇)
上一篇RTX篇首先移植的是USB 从机Slave工作模式的VCP(虚拟串口)类,在移植之前都是在裸机上进行了初步测试,都很正常,但是首次移植到RTX系统下之后,又出现了之前的死机现象,只是这次死掉的地方不一样,这次是进入到硬件错误,并且是在USB初始化之后原创 2022-12-14 21:46:49 · 316 阅读 · 0 评论 -
关于DI采集边沿捕获的溢出问题
在实现DI的频率检测时,出现溢出事件与边沿捕获事件同时发生的问题,但是我们并不能区分两个事件的先后顺序,但是由于中断处理的时候需要运行处理代码,而这点执行时间会导致后一个事件的处理滞后,进而导致结果出现较大的偏差。原创 2022-12-11 12:48:34 · 141 阅读 · 0 评论 -
STM32移植USB驱动到RTX系统无法使用问题(RTX分析篇)
在USB移植前期,首先将USB模块移植到裸机板上,运行状态十分稳定,但是当使用RTX时,出现函数重复定义错误,修正这些错误之后,虽然不再有报错信息,但是运行一段时间之后,整个RTX系统滴答计数值不再变化,且程序进入硬件错误(程序死掉)。原创 2022-12-09 22:05:06 · 424 阅读 · 0 评论