sx1208的通信模式有两种:packet mode和continue mode,其中较为常用的模式为packet mode。
字面理解
●packet为包模式,数据以一包一包的形式传输通信
●continue为连续模式,数据是连续不断的进行传输
packet mode通信流程
packet mode通信方式:
1、将通信的数据存放进fifo中
2、切换到发射模式,自动发射前导码、同步字和数据(和crc校验)
3、接收模组在进入接收模式后,便自动检测前导码和同步字,验证正确后(可配置一定的容错率)便会将后续的数据存放进fifo。
packet mode只需要先将数据填入fifo,切换至发送/接收模式后,便会自动发送/接收。接收完成后会产生相应的中断,便可从fifo中读取数据。
continue mode通信流程
在数据的处理上,continue mode不会经过fifo这个环节,发射端的模组会直接读取data引脚上的数据,然后按照时钟节拍将数据调制后发射出去。不同的是,continue是实时一位一位数据发射,而packet是整个数据先存放进fifo后再将它们一位一位发射出去。
接收端continue mode下,数据不会存放进fifo中,但接收到的数据会按照时钟节拍表现在data引脚上,packet则是完整的接收完后,用户可从fifo中读取,continue则需要跟着时钟节拍一位一位去data引脚读取。
dclk为continue mode的时钟节拍,每一次上升沿,模组便会将data引脚上的数据(0或1)调制发射出去,因此需要在时钟的下降沿中断产生时,变更data引脚的数据。由于该模式是一位一位实时发射,所以用户需要将数据一位一位地在下降沿中断输出到data引脚上去,直至全部数据都输出完毕。
需要注意的是,该模式没有像packet一样有发射完成的标志,所以数据完成后,若不退出发射模式,模组会继续按照节拍将data上的数据发射出去。
同样的道理,进入接收模式后,模组会自动解调信号并映射到data引脚上,在dclk的时钟下降沿时会更新数据,因此用户需要在时钟上升沿中断产生时去读取data引脚的数据。
整个通信的数据内容皆由用户自行决定,因此发射端不会像packet一样会自动发送前导码和同步字等信息,用户可自定义同步条件,若不采用前导码和同步字的配置,在接收端需要时刻去读取data引脚的数据并对比是否正确。
但若发射端先发射前导码信息和同步字信息(要与接收端寄存器配置一致),后发射数据,接收端便能产生前导码中断和同步字中断。这样再进行data引脚的数据采样,可以避免高频率的进中断读取data引脚进行数据同步。
总结
从二者的操作复杂度看,packet模式明显要简单的多,因此实际使用中更推荐。continue模式有更好的自定义通信状态的选择,但是需要严格的同步才能保证数据的准确性。用户可以根据需要选择相应的模式。
相关产品:
更多问题请咨询:林先生18067988136
现在就登录
物联网开发者社区
手机版