【485 IO板 源码调试】

文章详细介绍了485IO板的源码调试过程,包括基于GD32F1X0的环境配置、bootloader用于OTA升级、RS485通信协议及TC5020LED驱动芯片的SPI通信。在代码执行中,首先进行时钟、GPIO、SPI及RS485的初始化,然后通过中断处理串口接收,利用状态机解析数据帧,并更新IO配置。文章强调了中断在单片机程序中的重要性以及理解芯片手册的必要性。
摘要由CSDN通过智能技术生成

【485 IO板 源码调试】

eio最初代码
eio硬件原理图

事件:
原本的io板是在之前的同时的基础上进行开发的。由于本人在此之前还是单片机小白,所以该篇博客先对原本基于开发的代码进行分析。包括基于GD32F1X0的环境配置,一些概念梳理,原代码书写逻辑等

代码结构

整个项目project分为3个部分,主要的部分是app, bootloader。

bootloader是为了后面进行ota升级开发用的。

整个代码运行时先运行bootloader部分,如果没有接收到上位机升级的命令,则跳转到app的地方开始运行代码
在这里插入图片描述
io板的通信基于串口485 + transportcrc协议来实现的

在这里插入图片描述
单片机的代码先进行初始化,时钟初始化,gpio引脚初始化,TC5020led驱动芯片引脚初始化,RS485串口初始化,(业务逻辑初始化)

时钟初始化

在这里插入图片描述
这里主要是时钟的初始化,可以理解为滴答时钟,即靠节拍数来计时。

SysTick_Config()来配置多少下节拍进入中断函数
在这里插入图片描述
us_cnts 表示 多少下节拍是1us。

TC5020初始化

在这里插入图片描述
之前的开发人员和TC5020通信是用的SPI进行通信的,因为原理图中和TC5020相连的是SDI CLK,可以使用SPI通信。
在这里插入图片描述

RS485 初始化

在这里插入图片描述
在这里插入图片描述
这里对RS485串口进行初始化,结合原理图,可以看到主要配置 RX TX 还有一些发送接收寄存器。和DE引脚
在这里插入图片描述

主逻辑

在这里插入图片描述
主要流程是通过RS485_recv_task()来接收transportcrc数据包。

以下是485的串口接收中断函数,每当有数据过来,就会先检查USART寄存器的RBNE标志位。
如果可以接收,就将一个字节的数据加入缓冲区。
在这里插入图片描述
所有数据都放在ringbuffer里面

在这里插入图片描述
主流程里面把每个字节往transportcrc的状态机里面送
并把解析出来的数据帧存储来

io_info_update_task()是用来把帧里面的指令数据解析到具体的每个io配置操作io_action里面.

然后每过固定几个tick,就向TC5020led驱动芯片的锁存器里面写入当前的操作。

一些概念

  • 单片机里面中断,可以简单理解为是线程,这样可以防止自己的主程序被阻塞。
  • 学会看芯片的使用手册,和引脚定义。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值