在mini2440上面搞定CC2500物理层驱动

mini2440上面搞定CC2500驱动



  1. 写在前面


最近基本搞定了 CC2500 linux 下面的驱动,在这个过程中遇到了好多问题,特此总结出来和大家分享。但是需要注意的事情是:
第一,本文不负责程序的具体讲解,诸如每一行程序都讲什么:这个在程序的里面有注释。本篇文章更侧重于从整体结构上让大家对于 linux 下的 CC2500DE 驱动有一个整体的了解,如果到时候需要深入研究的时候,再来看具体的代码;
第二,很多师弟师妹没有习惯在 linux 下编程,或曰,在操作系统下面写程序;并且,对于本专业的东西理解并不扎实。但是,文章中不可能就每一个涉及到的概念都大加讲解。因此,这篇文章还是需要有一些基础才能来阅读的,如果遇到什么不明白的地方,请及时来问我,或者跟帖,或者自己查资料。毕竟,这个驱动花费了我半个多月的时间,其中遇到的问题,不可能在一篇文章中就讲得清清楚楚。


  1. 背景知识


如果大家看过实验室的 WSN 方面的程序,可能会被其中的架构搞得天昏地暗。这里,简单的帮助大家把实验室的 WSN 的软件、硬件方面捋一捋。
说到软件,就不能不说硬件。我们的节点由两部分组成,一个是单片机,一个是 CC2500 的射频模块。射频模块通过 SPI 接口和单片机进行通信。除了 SPI 模块用到的 4 条线,实际上 CC2500 还需要告诉单片机“我接收到一个数据”,这个地方 CC2500 可以通过配置 GDO 来实现。我们这里采用的 CC2500 GDO0 作为单片机的一个外部中断,当接收到数据的时候, GDO0 就会变为低电平,然后触发 CC2500 的中断,从而接收数据。
那么, CC2500 究竟是如何来进行数据发送、接收的呢?其实很简单。如果大家稍微用过一点可以控制的芯片就会知道,很多芯片内部都有寄存器, CC2500 之所以能够完成发送、接收的功能,就是通过配置寄存器来完成的。比较重要的配置有信道、波特率、信号强度等等,另外, CC2500 还有 64bytes RXFIFO 64bytes TXFIFO ,他们的作用就是用来发送和接收。当配置 CC2500 结束之后,如果用来发送,那么就把数据放在 TXFIFO 里面,然后把 CC2500 的状态变为发射状态,数据就自动发送出去了。同样的道理,当 RXFIFO 里面接收到了数据之后, CC2500 就会如前所说,发出一个中断,通知单片机来读取数据。
单片机通过 SPI 接口读出了 CC2500 中的数据,就需要进行简单的处理了。我们的节点是遵循 802.15.4 协议的,如果有兴趣,大家可以去看一看这个协议的内容。对于我们来说,比较重要的就是帧的结构。下面这个是物理层帧的结构:
字节: 4
1
1
可变
先导码
帧定界符

帧长度(7位)

保留位(1位)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值