初级会员

- 积分
- 129
- 金钱
- 129
- 注册时间
- 2015-1-12
- 在线时间
- 14 小时
|
5金钱
u8 Ublox_Cfg_Prt(u32 baudrate)
{
_ublox_cfg_prt *cfg_prt=(_ublox_cfg_prt *)USART2_TX_BUF;
cfg_prt->header=0X62B5; //cfg header
cfg_prt->id=0X0006; //cfg prt id
cfg_prt->dlength=20; //数据区长度为20个字节.
cfg_prt->portid=1; //操作串口1
cfg_prt->reserved=0; //保留字节,设置为0
cfg_prt->txready=0; //TX Ready设置为0
cfg_prt->mode=0X08D0; //8位,1个停止位,无校验位
cfg_prt->baudrate=baudrate; //波特率设置
cfg_prt->inprotomask=0X0007; //0+1+2
cfg_prt->outprotomask=0X0007; //0+1+2
cfg_prt->reserved4=0; //保留字节,设置为0
cfg_prt->reserved5=0; //保留字节,设置为0
Ublox_CheckSum((u8*)(&cfg_prt->id),sizeof(_ublox_cfg_prt)-4,&cfg_prt->cka,&cfg_prt->ckb);
while(DMA1_Channel7->CNDTR!=0); //等待通道7传输完成
UART_DMA_Enable(DMA1_Channel7,sizeof(_ublox_cfg_prt)); //通过dma发送出去
delay_ms(200); //等待发送完成
USART2_Init( baudrate); //重新初始化串口2
return Ublox_Cfg_Ack_Check(); //这里不会反回0,因为UBLOX发回来的应答在串口重新初始化的时候已经被丢弃了.
}
其中Ublox_CheckSum((u8*)(&cfg_prt->id),sizeof(_ublox_cfg_prt)-4,&cfg_prt->cka,&cfg_prt->ckb);是什么意思啊 ,为什么要减去4呢,麻烦指导一下 |
最佳答案
查看完整内容[请看2#楼]
楼主去看u-blox6_ReceiverDescriptionProtocolSpec_GPS.G6-SW-10018-C.pdf
这个文档,学习下check sum是怎么计算的,就知道了。
|