- 博客(6)
- 收藏
- 关注
原创 Modbus RTU报文解析
5. Modbus寄存器地址和PDU地址偏移为1,例如第一个寄存器(例如0001寄存器),对应的是地址0。寄存器有4种,线圈状态(Coil Status)、离散输入状态(Input Status)、保持寄存器(Holding Register)、输入寄存器(Input Register),对应DO、DI、AO、AI。3. Modbus是一主多从的模式,分为单播和广播模式,广播模式从站地址为0,功能码为写指令,从站不回复。主设备(客户端)或从设备(服务器)中的任何一个出现异常响应,都会导致数据处理错误。
2024-08-27 14:03:15
800
原创 STM32标准库移植LWIP
我对于这个分层的弄的不太明白,肯定有错误,我就按照自己理解画个脑图,图到时候传上去。按照野火的介绍,大致分成下图这样的结构。感觉已经很清楚了,到时候点开看就行。
2024-05-31 11:08:13
1042
原创 STM32 HAL库 CAN通讯相关设定
第一栏是配置时钟的,通过配置能设置波特率(主要功能,里面具体的TQ方面请自行查找),因为我的总线是42MHz的,直接分频42,这样TQ就是整数,方便设置波特率。最后一个是补偿机制的,相当于一个可设定频率的可调带宽滤波器,可以类比成系口袋的绳,越大容错越高,但是风险也越大(意外的杂波)。RX0 RX1取决于用了那个FIFO,用0就勾0,用1就勾1;CAN.C里要去配置一下,默认生成的没有过滤器的设置,所以自己建一下,建ID和mask,内容要根据实际的来,看是标准帧还是扩展帧,还有掩码相关的部分也要自己配置。
2024-04-09 00:12:00
875
原创 裸机串口接收不定长数据讨论是否使用DMA
b. 通过空闲中断做整个报文的结束标志,也是中断嵌套,但是是通过接收中断接收一个字节,接收中断接收一个字节......空闲中断处理接收的数据.....接收中断......这样的优点是中断次数少了(相对),对实时性影响也较小。这样我们可以用中断嵌套的方式(接收中断套定时器中断)来实现,但是这个过程一个字节用两个中断一个字节用两个中断,数据量一大就会影响整体的实时性,尤其是开了好多个中断的情况,影响巨大,可能出现很多bug,而且不好查。1. 串口接收中断,一次接收一个字节,进入中断指针+1,再开启中断。
2023-12-26 10:26:38
595
1
原创 STMCUBEIDE STM32F407ZGT6 FREERTOS LWIP设置
硬件:硬件采用正点原子F407的开发板,网口芯片LAN8720A。Step5:FREERTOS配置。Step4:LWIP配置。Step1:下载口选择。Step3:ETH配置。Step2:时钟配置。Step6:代码修改。
2023-10-25 09:43:35
444
原创 关于使用STM32CubeMX配置FSMC驱动8080并口LCD
看上面这个图我们能看出来D/C上升是传数据,我们发送的0xFF,发出的条件是WR先置0再置1,数据是从WR的第一个上升沿之前第一个下降沿之后开始的,能看出来是8个1。我用的逻辑分析仪看的,第一个时钟和第二个加一块管的是CS的下拉的持续时间,第二个是读写的时间。16位的需要有偏移,那个便宜就是0位不给用,寄存器0-25正常对应A0-25,现在就变成了寄存器1-25对应A0-24。实际上就是你选的那个A什么就是你的数据命令切换线,对应的地址就是上边的计算出来的地址,实际上就是第几位置1。
2022-10-25 18:31:21
4107
4
好像碰到 vscode 的 bug 了?
2024-04-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人