logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

STM32的I2C死活不通,最后发现是内部上拉惹的祸

内部那三五十kΩ的电阻,总线电容稍微大一点,RC充电时间常数就上去了,上升沿变缓,从机就判断不了高电平。不对,发了,但从机没应答。F103的内部上拉电阻,参考手册上写的是典型值30kΩ到50kΩ之间,注意这只是典型值——有些引脚更离谱,都到70kΩ了。HAL库的I2C初始化翻来覆去对了三四遍,时序参数从标准模式切到快速模式再切回来,GPIO配置也检查了,Open Drain没错,AFIO也开了。上

#stm32#单片机#嵌入式硬件
嵌入式Linux应用开发,到底和桌面开发差在哪

你有没有过这种经历——在Ubuntu上写了个C程序,gcc编译通过,跑起来一切正常,然后丢到ARM开发板上,./a.out敲下去,系统回你一句"cannot execute binary file"?道理很简单。x86_64编译出来的东西,没办法在ARM的核上跑。不仅仅是换个CPU架构这么简单。

#linux#运维#服务器 +1
在Cortex-M4上跑了个神经网络,然后我emo了

85%其实凑合能用,但如果你的产品需要高可靠性——比如工业缺陷检测或者涉及人身安全——你得想清楚接不接受这个tradeoff。我后来试了用更多数据做量化校准,把精度拉回到88%,也算勉强能接受了。你根本不知道,直到你在MCU上一跑,RAM直接爆炸。模型是Keras训的,2层卷积加全连接,参数加起来几十万个浮点数——扔在PC笔记本上跑得好好的,张嘴就要塞进一个只有256KB RAM的Cortex-M

#嵌入式硬件
一块电池跑两年?我被STM32的待机电流摆了一道

过了9个月,真还活得好好的——但那已经是后话了。XC6206这种Iq只有1μA左右,而AMS1117的Iq高达5mA——你没看错,5个毫安,待机时的MCU才零点几个μA,一个LDO就把预算吃光了。有次测出来待机电流莫名其妙多了十几μA,用示波器一量,有几个GPIO在sleep前没配好,处于floating状态,内部上拉/下拉来回跳导致漏电。MCU待机电流只是冰山一角,真正吃电的是外围器件——LDO

#stm32#嵌入式硬件#单片机
一个160KB的模型,能在STM32上跑起来吗?用TinyML说可以

模型和推理引擎都就位了,传感器数据怎么喂进去?以一个三轴加速度传感器检测震动异常为例:MCU通过SPI读取ADXL345的数据,每读一组xyz就塞入一个环形缓冲区。攒够窗口长度(比如64个采样点),做一次简单的归一化——把原始值映射到模型输入要求的[-1, 1]区间——然后memcpy到interpreter的input tensor。i++) {Invoke()返回后,output tensor

#嵌入式硬件
一个160KB的模型,能在STM32上跑起来吗?用TinyML说可以

模型和推理引擎都就位了,传感器数据怎么喂进去?以一个三轴加速度传感器检测震动异常为例:MCU通过SPI读取ADXL345的数据,每读一组xyz就塞入一个环形缓冲区。攒够窗口长度(比如64个采样点),做一次简单的归一化——把原始值映射到模型输入要求的[-1, 1]区间——然后memcpy到interpreter的input tensor。i++) {Invoke()返回后,output tensor

#嵌入式硬件
STM32的GPIO输出速率配置,从寄存器说起

一个有意思的细节是,OSPEEDR的实际效果还跟IO的负载电容有关。PA5的上升沿几乎是垂直弹上去的,而PA6的上升沿有一个明显缓坡。大部分人的反应是"无所谓吧,拉满就完了,50MHz走天下"。先不评价这个习惯好不好,我们直接从参考手册的寄存器描述入手,看看GPIO的OSPEEDR位域背后到底控制了什么。因为这不是一个"设多少就能跑多快"的参数,它控制的是输出驱动电路的。注意看,同一个GPIO组的

#stm32#单片机#嵌入式硬件
STM32的DMA用着用着就停了?我折腾了一下午

之前做一个小项目,用STM32F103的ADC采波形,通过DMA自动搬运到内存里。逻辑很简单对吧?ADC配置成连续模式,TIM2触发,DMA circular mode,数据满了进回调。代码写完一跑,前十几帧数据是好的。然后……DMA停了。波形停在最后一次采样的电压上,ADC还在干,but DMA不搬了。我当时第一反应:是不是哪里有溢出?检查了BUF_SIZE,128个uint16,DMA配置也是

#stm32#嵌入式硬件#单片机
嵌入式Linux应用开发:用户态程序到底在干什么

你有没有想过一件事——一个在MCU上写裸机程序的工程师,第一次接触嵌入式Linux时,最困惑的是什么?不是语法,不是API,而是"操作系统"这三个字到底意味着什么。从单片机切到嵌入式Linux,最核心的思维转变不是学会调用 open/read/write,而是理解你的程序不再拥有整个CPU。它只是个"租客"——在操作系统的管辖下,分时地使用硬件资源。而且这还不是唯一的变化,你还要面对用户态和内核态

#linux#运维#服务器 +1
STM32跑AI到底行不行?拿TFLite Micro试了一把

有次跟一个做服务器的朋友聊天,他说你们嵌入式搞AI就是在玩具上跑马灯。我当时就跟他杠上了——Cortex-M4带DSP和FPU,跑个轻量推理怎么就玩具了?后来自己真动手试了试,发现……嗯,确实有点自虐倾向。

#stm32#人工智能#嵌入式硬件
    共 30 条
  • 1
  • 2
  • 3
  • 请选择