打印
[RISC-V MCU 创新应用比赛]

CH32V103 modbus测试

[复制链接]
3165|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 aple0807 于 2021-8-6 10:17 编辑

    首次接触RISC-V芯片,使用上和ARM-M系列芯片类似。 就CH32V103而言,外设结构和STM32103基本一致,寄存器排列似乎也是一样的。
经过几天的研究,对CH32芯片及其开发环境有了基本的认识。通过移植 modbus 学习芯片基础外设及软件结构。


modbus移植主要涉及串口操作及定时器管理。


熟悉stm32的话,对芯片理解会比较容易,反而开发环境的适应可能会遇到麻烦。
下面先说说我遇到的问题:
    1、库项目建立,MounRiver 不像Keil和IAR那样可以直接建立空工程来选择生成库。它会强制生成带很多初始文件的应用项目,需要手动删除,然后在C/C++ Build->Settings->Build Artifact中选择生成静态库。

    2、库文件导入也不是直接添加目录文件就可以的。需要在项目属性里面手动添加文件名及路径。

    3、芯片中断系统用的是和arm一样的NVIC结构,但书写上有差别。
        arm的中断函数写法和普通函数一样。
        RISC-V的中断函数需要__attribute__((interrupt("WCH-Interrupt-fast")))属性声明。
        观察汇编结果可以看到普通函数的返回用的RET指令,中断函数用的MRET指令,这点类似51,属性修饰应该是影响返回指令的。
        
    移植过程中串口及定时器操作和stm32基本一样,因为我是习惯用寄存器的,没感觉就多大差别。
需要注意的是,板子上的BOOT0浮空虽然测得是低电平,但还是要用跳线帽接地,否则调试启动会莫名跑飞。
下面附上测试工程。


v103_demo.rar (941.64 KB)

ModbusDebug.rar (39.7 KB)


项目使用资源:
TIM4: 提供APP时基
PA6,PA7 : 连接LED1,LED2。需手动跳线。
UART2   : modbus从机,115200,8N2,站号2。 开放HOLD区数据地址0~1024
UART3   : modbus主机,115200,8N2


两路modbus通信测试
PA2 <--> PB11               
PA3 <--> PB10   

使用特权

评论回复

相关帖子

沙发
foxsbig| | 2021-8-11 11:21 | 只看该作者
modbus这种协议能广泛应用并持续,
一直是我很费解的

使用特权

评论回复
评论
foxsbig 2021-8-14 10:28 回复TA
@aple0807 : 我知道很多应用下是标配,我也接触过。 可能就是太通用的缘故吧,所以一直沿用 
aple0807 2021-8-11 13:19 回复TA
我们做工业产品的,modbus是标配。连接上位机,触摸屏,PLC用的都是这个协议,所有带通信的工业控制器,只有这个协议是通用的。 消费类产品基本接触不到。 
板凳
zhifeng| | 2021-8-12 08:33 | 只看该作者
modbus  定义很严谨的。dmx512才是真正的扯淡

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

328

帖子

2

粉丝