头像-186801

赤心木zqw

  • 19291
  • 单片机、嵌入式、传感器/MEMS
  • 消费电子

个人成就

获得 703 次赞

帮助过644人

单片机外电路中 (比如STM32) 信号隔离的问题?

单片机是一个低压系统,在对外通讯时,如果遇到和高压或者自身较为敏感时,就需要加隔离。隔离的目的是为了不要干扰其他模块,或者不要被其他模块干扰。比如用单片机驱动大功率的电机,电机在启动或者停止时会有很大的电压波动,严重时会干扰系统,此时就要隔离和电机模块的连接线。一般使用光耦隔离,选型时要注意根据通讯速度来选择合适的光耦。如果只是开关,继电器也可以认为是一种隔离方式。

STM32L031单片机程序下载问题

其实单片机使用外部供电,Jlink只连接数据线,时钟线,地线这三条线也是能够烧录的。检查下STM32的RST引脚是否直接连接到电源了,导致无法下拉复位,实际上jlink烧写程序时会发送一条复位命令,复位后进入bootloader开始烧录的。如果外部供电,jlink烧录时,可能复位线一直被拉高,无法复位,使得无法进入bootloader。你可以看下在外接电源和Jlink都连接上的情况下,Jlink是否识别到芯片,识别到则可以正常烧录。

单总线上DS18B20的应用

问题回答如下:1. 总线上只用挂一个电阻,但是如果18B20越多,那总线上的等效电容会越大,此时要适量降低阻值,以适应通讯速度。2. 没有找到单总线最多挂载多少设备的数据,但是每个18B20内部有一个64bit的地址,这么看的话,理论上挂载的设备是很多的。实际应用中,我挂载过4个,通讯成功。3. 总线的长度越长,线阻越大,会影响总线传输波形,适当降低上拉电阻阻值增加驱动能力。4. 单总线协议中,如果挂载多个设备,开始通讯时,会启动搜索ROM命令(如果只有一个设备,则跳过此步骤), 之后采用二叉树算法,获取到总线上所有设备的64bit地址。读取温度值时,则先发送匹配rom命令,和对应地址通讯,得到该地址设备的温度值。

嵌入式系统中经常要用到无限循环,怎么样用C编写死循环呢?

最常见的是while(1)这种无限循环的方式,对于单片机来讲,初始化完成后就是这种循环指令了。

Arduino出现上传失败(端口已连接)?

上传失败的原因还是挺多的:1. 看下编译是否成功,Arduino上传包括了编译,如果编译不通过,上传也不过;2. 看下串口是否被占用,特别是Arduino IDE是否打开了串口监视器;3. 板子是否进入了烧录模式,一些板子(ESP8266,ESP32等)需要先把IO口配置为烧录模式(主要是配置SPI Flash),才能够上传程序。

学stm32都需要准备什么软硬件?

可以先熟悉下51,在入门STM32,熟悉下单片机的一些基本外设及程序结构。STM32相比51,外设多了,功能也多了;C语言的基础还是需要的。

arduino编译时特别慢,有时一个地方卡上十几分钟

第一次使用Arduino的时候就对编译速度很不满,编译一个工程基本上把库里相关的文件都编译了一遍,还没办法增量编译,对于大一点的库还怀疑是不是电脑死机了。这点算是通病吧,只能期待Arduino能够改进,性能好点的电脑,编译速度相对快些。

有没有好的语音唤醒模块?

树莓派上没有语音输入端口,需要外接麦克风。可以用snowboy作语音唤醒。