打印
[STM8]

用stm8l152编写si4463的底层驱动程序

[复制链接]
1565|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
海地彼岸|  楼主 | 2016-8-31 14:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近我用stm8l152作为主控芯片驱动si4463,调试的时候我把芯片设置成接收模式,然后接收芯片状态的时候一直是10000100,配置成发送模式的时候也是10000100, 查看si4463的API手册说是Another enumeration for Ready state,(SPI驱动是没有问题的,因为能接收到CTS),这是怎么回事?请教一下大神。
沙发
huangcunxiake| | 2016-8-31 18:02 | 只看该作者
这个没用过,网上找个资料,感觉人家说的很好。
————————————————————————————————————————————————————————————————————————
si4463工作在TDD模式,也就是通常所说的时分复用模式下,大家知道TDD模式下,多个模块同时收发,如果大家又在同一个频率点上,大家都在发数据,那么就会
造成干扰,就像一个教室里面,所有的人都在同时说话,那大家肯定就听不清楚了,为了能听清楚对方的说话,有几种方式,一种就是大家轮流来说话,一个人说话
的时候其他人只是倾听,这种方式就叫时分复用。 还有就是如果教室里面有中国人有美国人,那么就可以有1个中国人,一个美国人,两个人同时说话,中国人说的话
就中国人能听懂,美国人说话的话,就美国人听懂,这就叫频分复用。
si4463的通讯模式有2种,一种是包接收发送,一种是直接接收方式,包接收发送最方便,最简单。跟网络中的UDP方式很像,你丢n个字节给si4463的发送缓存区。
他帮你发送出去后,对方芯片接收到数据后,会自动放入芯片内部的接收缓冲区(FIFO)。可以保证发送和接收到的长度是一样的。
si4463内部有有两个包收发器。一个负责接收,一个负责发送,SI4463每个包的长度最大是64字节。也就是说你每次最多只能发64字节的数据
但是除去一些协议的损耗,可能就只有4,50个字节了
用户数据丢给si4463内部的包发送缓冲后,剩下的事就由si4663自己去干了,它还需要给用户数据加上一些附加数据。
分别是前导码,同步字、用户数据区、用户数据区的CRC校验码。其中除用户数据区的数据外,其他数据都是由si4463自动帮你加上的。
下面我们来聊聊为什么需要加上前导码、同步字、以及CRC校验码。
两个无线模块通讯就跟两个人喊话一样,在说话之前,要先通知对方一声,比如叫你妈妈吃饭之前,你要喊“喂......,小明,吃饭了",前面那个喂,就
好像前导码,就是让对方注意到你,有个接收的准备,这个前导码的长度范围是1-255字节,可以选择,同步字就是告诉对方,从哪里开始才是有效的数据。不然光听到喂了,同步字之后才是
真正有用的数据,同步字的长度是1-4字节,一般情况设置2个字节就好了。有点像软件中的协议头部,用来区分数据从哪里开始的。最后对你要发送的数据,做一个CRC校验。这里的校验方式
有很多种可供选择,一般选择CRC16方式。

使用特权

评论回复
板凳
zhuomuniao110| | 2016-8-31 20:43 | 只看该作者
楼主用IO模拟试试看,效果有没有,如果有,那是没有配置好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

19

帖子

0

粉丝