串口通信
文章平均质量分 75
慕诗客
这个作者很懒,什么都没留下…
展开
-
通过UDP实现参数配置
这种实现方式有个好处,就是可以不用管当前的设备IP,常规的TCP通信的话,你必须得知道目标IP,先建立连接,然后才可以通信。由于是广播发送,所以设备端必然是可以从55555端口接收到指令,且能获取到PC端的发送地址和端口信息。我们知道UDP是一种无连接的网络传输协议,在发送数据时指定目标IP及端口就可以将数据发送出去,因此特别适合用作网络设备发现。如PC端发送F5 01 FF,其中F5为帧头,01为查询关键字,FF为帧尾,PC使用UDP广播发送,目标端口55555。来讲讲UDP的一种常见应用。原创 2024-04-01 21:07:22 · 1081 阅读 · 0 评论 -
STM32使用U盘进行固件更新
事实上完整的IAP可以做的很丰富,可以使用不同的触发升级方式,也可以使用不同的通信接口,还可以使用不同的传输协议。接下来是需要实现之前的注册的回调函数,分为两个部分,一个是USBH_Class_cb_TypeDef,也就是具体的USB设备类相关,比如本次用的U盘,就是大容量存储MSC类,需要实现下面几个函数。接下来是USBH_Usr_cb_TypeDef,这部分是用户用于处理USB事件的,先看下官方的结构体内容,里面涉及到USB初始化,插入,拔出等等一系列动作后的处理,当然也可以不处理。原创 2024-03-30 16:49:31 · 1641 阅读 · 0 评论 -
温湿度传感器SHT21
一般的IIC器件,比如EEPROM,此时会发送要写入或读取的地址,如往0x0000地址写入数字1,那么会先发送0x0000,等到回码后再发送0x01,之后在收到应答后结束通信。前面在讲UART时提到过通信传输所需要的几个必要条件,首先得知道什么时候通信开始,什么时候通信结束,然后就是如何去解析数据了,根据这几点,我们来谈谈IIC是如何实现通信的。从图上可以看到,IIC规定的。温湿度的获取也很简单,启动IIC,读取相应寄存器的值,再根据手册提供的公式转换一下即可。原创 2024-03-04 22:47:30 · 1174 阅读 · 0 评论 -
光传感器OPT3001
这样看起来,区分起止信号与数据电平是不是就更加容易些了,但是嘛由于只有一根数据线了,缺点就是无法同时收发了,因此它是半双工通信的。一般的IIC器件,比如EEPROM,此时会发送要写入或读取的地址,如往0x0000地址写入数字1,那么会先发送0x0000,等到回码后再发送0x01,之后在收到应答后结束通信。前面在讲UART时提到过通信传输所需要的几个必要条件,首先得知道什么时候通信开始,什么时候通信结束,然后就是如何去解析数据了,根据这几点,我们来谈谈IIC是如何实现通信的。从图上可以看到,IIC规定的。原创 2024-03-04 22:19:04 · 732 阅读 · 0 评论 -
W5300驱动说明
FSMC初始化(在这里不包括复位和中断脚的初始化,这两个脚可以使用普通IO,而FSMC的引脚是固定的),根据接线不同,FSMC_NORSRAMInitStructure.FSMC_Bank和FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth参数也不同,具体的可以查看STM32的手册。接下来就是对于芯片的初始化,前面说过对于芯片的访问如同SRAM一样,具体到W5300上,就是寄存器地址好比SRAM存储地址,操作寄存器就是往不同的地址写数据。原创 2024-03-03 15:35:32 · 1288 阅读 · 0 评论 -
GD25Q32驱动
而之所以会有双线SPI和四线SPI的出现,其实主要是因为某些情况下并不需要全双工,但对通信速度有更高的要求,所以对引脚功能做了些调整。但是既然都叫SPI,说明仍然是符合SPI的协议标准的,本次只讲解标准SPI,理解了后感兴趣可以自行研究双线SPI和四线SPI。假设CPOL为0,那么在第一个上升沿时,发送方往数据线上发送一位数据,在下降沿时接收方读取一位数据,如此循环8次,一个字节就被发送和接收了。以上就是GD25Q32的驱动代码,驱动函数中是按64K擦除的,如果需要按32K擦除,则使用0x52指令即可。原创 2024-03-02 17:36:07 · 824 阅读 · 0 评论 -
AT24C1024的模拟IIC驱动
一般的IIC器件,比如EEPROM,此时会发送要写入或读取的地址,如往0x0000地址写入数字1,那么会先发送0x0000,等到回码后再发送0x01,之后在收到应答后结束通信。前面在讲UART时提到过通信传输所需要的几个必要条件,首先得知道什么时候通信开始,什么时候通信结束,然后就是如何去解析数据了,根据这几点,我们来谈谈IIC是如何实现通信的。有两个需要注意的点,一个是器件地址指令,当写存储地址处于前一半时,发送A0指令,当写存储地址处于后一半时,发送A2指令。原创 2024-03-02 16:51:50 · 1253 阅读 · 0 评论 -
STM32串口IAP
那么有哪些便捷的升级方式呢,其实有很多,比较常见的比如手机软件更新,很典型的远程升级案例。前面说过“修改STM32链接脚本可以修改程序写入闪存的起始地址”,假如我们设定程序默认烧录到0x08008000上,没问题,但是程序无法启动,因为它总是从0x08000000开始,然后从0x08000004(默认中断向量表地址)取复位中断向量的地址,很遗憾这里面的地址不对所以程序就这么挂了。事实上完整的IAP可以做的很丰富,可以使用不同的触发升级方式,也可以使用不同的通信接口,还可以使用不同的传输协议。原创 2024-01-28 16:32:30 · 623 阅读 · 1 评论 -
半桥式称重原理
记录标定的n个点,如(AD1,10kg),(AD2,20kg),(AD3,30kg)...(AD8,80kg),(AD9,90kg),可以利用excel的图表或matlab等拟合出函数关系式。一般来说,称重传感器的质量和AD字之间是线性关系的,即AD=a*Kg+b,那么Kg=(AD-b)/a。接下来是标定,即拿标准质量的砝码与采集值做映射,找出对应的关系,得到一个通用的计算公式,然后就可以根据采集的AD字换算成质量了。原创 2024-01-28 21:14:45 · 324 阅读 · 0 评论 -
基于USB的单反相机远程控制
接下来就是按这个协议去开发就可以了,PTP的Operation code如下,在单反相机控制上,很多都是用不上的,当然也有很多指令是厂商自定义的,也就是你无法从标准PTP协议文档上去找到。首先,单反相机属于USB设备端,而我们的控制设备属于HOST,当USB设备接入时,首先进入枚举过程,在这个过程里我们可以获得单反相机的很多信息,包括协议版本,序列号,设备名称,以及具体设备类型。如果说厂家没有提供具体协议,那就只能根据已有的控制设备,通过USB总线监听设备去抓包了。附上一段佳能单反的抓包数据供参考。原创 2024-02-02 14:22:02 · 932 阅读 · 0 评论 -
WK2132芯片使用经验
到这里基本上初始化就结束了,但是因为本身芯片支持中断触发,所以如果要使用中断功能的话,还得再配置一下中断,值得说明一下的是该芯片中断使用的低电平触发,而STM32的中断是边沿触发,所以可能会有漏判断的时刻,需要注意。子串口的接收要麻烦点,首先是检测中断触发后去读中断寄存器,判断是哪个子串口发生的中断,然后可以将数据放入对应的缓存中接收备用,最后可以在主循环中对接收缓存做解析处理。子串口的发送也比较简单,还是通过主串口去写寄存器或写FIFO,同样的也有字节数的限制,请查看手册。附上基于STM32的参考例程。原创 2024-02-01 23:38:38 · 762 阅读 · 0 评论 -
SPI通信原理
而之所以会有双线SPI和四线SPI的出现,其实主要是因为某些情况下并不需要全双工,但对通信速度有更高的要求,所以对引脚功能做了些调整。但是既然都叫SPI,说明仍然是符合SPI的协议标准的,本次只讲解标准SPI,理解了后感兴趣可以自行研究双线SPI和四线SPI。SPI是一种一主多从的工作模式,不同于IIC,它只有一个主机,读写操作全部由主机发起,从机被动响应。假设CPOL为0,那么在第一个上升沿时,发送方往数据线上发送一位数据,在下降沿时接收方读取一位数据,如此循环8次,一个字节就被发送和接收了。原创 2024-02-03 15:48:18 · 344 阅读 · 0 评论 -
IIC通信原理
这样看起来,区分起止信号与数据电平是不是就更加容易些了,但是嘛由于只有一根数据线了,缺点就是无法同时收发了,因此它是半双工通信的。一般的IIC器件,比如EEPROM,此时会发送要写入或读取的地址,如往0x0000地址写入数字1,那么会先发送0x0000,等到回码后再发送0x01,之后在收到应答后结束通信。前面在讲UART时提到过通信传输所需要的几个必要条件,首先得知道什么时候通信开始,什么时候通信结束,然后就是如何去解析数据了,根据这几点,我们来谈谈IIC是如何实现通信的。从图上可以看到,IIC规定的。原创 2024-02-03 14:44:07 · 409 阅读 · 0 评论 -
串口(UART/USART)通信原理-电气特性
前面说过串口通信的原理,接下来谈谈UART通信几个具体方式。在此之前,先提几个概念,双工和单工,全双工和半双工。很好理解,单工指一方只能作发送或接收,不能既作发送端也作接收端。双工指既能作发送端,也能作接收端。全双工指在同一时刻既能发送且能接收。半双工指可以收发,但不能同时收发。前面说过用高低电平表示数据0/1,实际上并不准确,因为并不是简单的单一电平,根据电平的差别,UART存在以下几种标准应用。原创 2024-02-03 00:20:26 · 514 阅读 · 0 评论 -
串口(UART/USART)通信原理-通信协议
当然也可以是其它长度,比如5位,在取完5位的数据后,应该就到了停止位(事实上停止位后还有总线自动上拉的空闲位),也就是该持续两个位以上的高电平了。在这里顺便提一下,数据是按位传输的,所以从高到低的发和从低到高的发是不一样的,所以串口也规定了发送时先从低位发的,如0x31实际传输顺序为0(起始)-10001100-1(停止)。比如我们设定起始位1位,停止位1位,数据位8位(刚好传递一个字节,所以最常用),9600波特率,无校验位,根据9600波特率可以知道每个位的持续时间约104us。原创 2024-02-02 23:34:08 · 377 阅读 · 0 评论