串口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高字节在后
就这样一个个的把值赋进去,再发送还是不对
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
发送前夕 数组填好数据. 然后
DMA_ClearFlag(DMA1_FLAG_TC4);
DMA_Cmd(DMA1_Channel4,DISABLE);
DMA1_Channel4->CMAR =(uint32)&Str_View.OverviewFIFO[0];//给DMA 发送的基地址
DMA_SetCurrDataCounter(DMA1_Channel4,Str_View.FIFOCNT);//设置发送的个数
DMA_Cmd(DMA1_Channel4,ENABLE); //启动发送
怎么可能会有错
一周热门 更多>