感谢21IC平台提供NUCLEO-U3C5ZI评估机会,开发板做工十分精良,板载CAN接口,居然还有一M2存储接口,虽然当前用不上,也算是意外之喜。
拿到开发板子,首先用CubeMX配置一个简单的工程点灯跑起来来点儿信心,点亮很顺利。
接下来就要切入正题了,对于超多外设、超大内存的U3C5ZI来说,并行执行各种复杂任务势在必行,使用RTOS在所难免。CubeMX配置项目可以直接选择THREADX,这个RTOS认证很多,飞机汽车都可使用,本次评测就用这个操作系统打底了。
1、操作系统添加
CubeMX选择中间件里面的THREADX,然后要做些简单的配置,本次测试的配置如下图所示:
内存池管理要开起来,这个后面CMSIS-OS中间层要用。
2、调试串口
板载的ST-LINK连接在芯片的UART1上,用UART1做一个SHELL控制台方便调试打印,如下图所示,可以通过串口做运行时交互。
3、MODBUS
本次试验的重点来了,MODBUS主站和从站
USART2做主站,PA2-PA3
USART3做从站,PB10-PB11
两个串**叉相连后,两个站点可以通过MODBUS通信了。
PA2-PB11
PA3-PB10
调试过程中遇到一点小插曲,可能这颗芯片出来时间太短,官方库居然有个狗血的漏洞,USART2的时钟获取是缺失的,无论LL库还是HAL库都会获取失败,导致U2波特率设置错误,缺失如下所示。
我用LL库,修改如下就可以正常工作了。
MODBUS任务代码如下:
void qc_task(const void *argv){qc_cmd_type mcmd;uu8 bdone;/* 主站配置 */modbus_master_init(QC_MODE_MASTER,115200, MB_PAR_NONE);modbus_master.os_event_send = mb_os_send;modbus_master.extend =0;/* 从站配置 */modbus_slave_init(QC_MODE_SLAVE,115200, MB_PAR_NONE);modbus_slave.os_event_send = mb_os_send;modbus_slave.extend = &qc_mb_slave_box;/* 命令配置 */mcmd.id =1;mcmd.wdat = mb_tst.reg_w;mcmd.rdat = mb_tst.reg_r;mcmd.wa = word_make(0xF,5);mcmd.wn =4;mcmd.ra = word_make(0x00,0x10);mcmd.rn =6;mcmd.callback = qc_callback;mcmd.attr = QC_MB_ATTR_HOLD_RW;mqc_stc_cmd_req(&modbus_master, 0, &mcmd);mqc_stc_cmd_req(&modbus_slave, 0, &mcmd);mcmd.wa = word_make(0x10,12);mcmd.wn =0;mqc_stc_cmd_req(&modbus_master, 1, &mcmd);mqc_stc_cmd_req(&modbus_slave, 1, &mcmd);mcmd.wa = word_make(0x0C,8);mcmd.wn =8;mcmd.ra = word_make(0x0C,8);mcmd.rn =8;mcmd.wdat = mb_tst.reg_w;mcmd.rdat = mb_tst.reg_r;mcmd.attr = QC_MB_ATTR_HOLD_RW;modbus_master.fun->stc_cmd_req(2, &mcmd);mqc_dyna_cmd_req(&modbus_master, &mcmd);mqc_dyna_cmd_req(&modbus_master, &mcmd);/* 任务处理 */for(;;){osDelay(2);if(modbus_master.com_st == QC_RX_END){NOP1();}if(modbus_slave.com_st == QC_RX_END){NOP1();}qc_mb_data_handle();qc_mb_poll(&modbus_master);qc_mb_poll(&modbus_slave);}}
链接成功后,在调试状态可以观测两路MODBUS运行状态,一主一从如下:
下面附上代码链接,感兴趣的小伙伴可以一起研究:
https://gitee.com/open-instrument/NUCLEO-U3C5ZIQ
NUCLEO-U3C5ZIQ: NUCLEO-U3C5ZIQ 评估
---------------------
作者:aple0807
链接:https://bbs.21ic.com/icview-3521128-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。