你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

串口DMA

[复制链接]
gtygg 提问时间:2016-11-29 23:05 /
悬赏5ST金币未解决
本帖最后由 gtygg 于 2016-11-29 23:08 编辑

串口DMA发送数据错误
寄存器0的值=0X0001;
寄存器1的值=0X000F;
寄存器2的值=0X00FF;

串口DMA接收到的数据为  01 03 00 00 00 03 05 CB   //读1号站0开始的连续3个寄存器的值,05 CB为CRC校验码,低字节在前,高字节在后;
串口DMA应发送的数据为  01  03 06 00 01 00 0F FF FF 2D 06

可现在串口返回的数据为  01  03 06 00 01 00 0F FF FF FF   或者  01  03 06 00 01 00 0F FF FF FD

只要不是读连续的3个寄存,无论是读连续的1个、2个、4个、5个等返回来的值都是正确的

我把要发送的数据一个一个赋到要发送的数组里,然后发送还是不对

不知道问题出在那里了


        send_num= 11;  //要发送的数据长度
        send_buffer[0]=0X01;  //站号
        send_buffer[1]=0X03;  //功能码
        send_buffer[2]=0X06;  //要发送寄存器值的字节数
        send_buffer[3]=0X00;  //寄存器0的值高位在前
        send_buffer[4]=0X01;  //寄存器0的值低位在后
        send_buffer[5]=0X00;  //寄存器1的值高位在前
        send_buffer[6]=0X0F;  //寄存器1的值低位在后
        send_buffer[7]=0XFF;  //寄存器2的值高位在前
        send_buffer[8]=0XFF;  //寄存器2的值低位在后
        send_buffer[9]=0X2D;  //CRC低字节在前
        send_buffer[10]=0X06;  //CRC高字节在后
       就这样一个个的把值赋进去,再发送还是不对





收藏 1 评论2 发布时间:2016-11-29 23:05

举报

2个回答
高二毛 回答时间:2016-11-30 08:32:10
串口感觉就不要用dma了,有些浪费,直接中断处理就行啊。毕竟串口的速率很低。中断处理完全来的及。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

xhzheng 回答时间:2016-11-30 11:21:44
串口数据速度低的,没有必要DMA;
我使用轮循的;

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版