找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 740|回复: 9
收起左侧

STM32F103C8T6采集不到modbus温湿度数据

[复制链接]
ID:906855 发表于 2024-12-9 18:21 | 显示全部楼层 |阅读模式
本帖最后由 blackgrape2012 于 2024-12-11 16:21 编辑

将温湿度传感器通过485转USB连接到PC用自带的测试软件可以测量到温湿度,发送请求码是8字节16进制01 04 00 00 00 02 71 CB,能够获得返回值。
用串口调试助手发送01 04 00 00 00 02 71 CB请求码也可以获得传感器上传的数据。
想用STM32F103C8T6串口接ttl转485然后接温湿度传感器,发送8字节请求码后收到返回的9字节16进制只有第一个字节是0x01,其它都是0,弄了好几天不知道什么地方出问题了,烦请帮忙看看。

附件里有源程序,用STM32CubeMX生成的,不胜感谢!
测试程序.png

串口助手.png

调试2.png



USART_TEST.7z (293.67 KB, 下载次数: 0)
回复

使用道具 举报

ID:788390 发表于 2024-12-11 15:30 | 显示全部楼层
用空闲中断去接收数据看看
回复

使用道具 举报

ID:906855 发表于 2024-12-11 16:21 | 显示全部楼层
小屋忆流年 发表于 2024-12-11 15:30
用空闲中断去接收数据看看

好的,谢谢!
回复

使用道具 举报

ID:685462 发表于 2024-12-11 22:17 | 显示全部楼层
说下个人看法。先确认你发出的数据时正确的,然后再确认接收数据。建议接上逻辑分析仪,看看485总线上的数据究竟是个啥。简单可以用modbus slave+usb485模拟从机,可以监测单片机实际发出的请求数据。
回复

使用道具 举报

ID:294886 发表于 2024-12-12 08:17 | 显示全部楼层
中间等待100ms,肯定接收不到,改成中断接收,应该就没我问题了
回复

使用道具 举报

ID:1139664 发表于 2024-12-13 17:10 | 显示全部楼层
我也做了  用串口中断接收就行啊
回复

使用道具 举报

ID:1139664 发表于 2024-12-13 17:11 | 显示全部楼层
我也做了啊   单片机发完通信码 延时一下  用串口中断接收就行
回复

使用道具 举报

ID:906855 发表于 2024-12-14 17:26 | 显示全部楼层
谢谢各位指点,问题解决了。就是接收也用HAL_MAX_DELAY
HAL_UART_Transmit(&huart1,dataTrnd,8,HAL_MAX_DELAY);//请求                       
HAL_UART_Receive(&huart1,dataRcyd,9,HAL_MAX_DELAY);//接收
HAL_Delay(500);
其实之前也用HAL_MAX_DELAY接收过,但当时没接显示屏不知道结果,用调试模式一直停在接收的那行不往下运行,观察器变量也没有数值。
结果.jpg        
回复

使用道具 举报

ID:906855 发表于 2024-12-15 13:24 | 显示全部楼层
之后又试了不同参数,发送和接收超时时间可以设定30以上,如果是30以下,有的数据就接收不全。

回复

使用道具 举报

ID:906855 发表于 2024-12-15 13:26 | 显示全部楼层
数据处理后效果
数据处理后.jpg

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表