微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 在mini2440上面搞定CC2500物理层驱动

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

时间:11-19 来源:互联网 点击:


  1. 调试过程中的一些问题

CC2500驱动调试的过程中,遇到的一些问题
第一,在调试的过程中,发现板子和2500没有办法进行通信。一开始怀疑是2500芯片的问题,后来确认2500芯片没有问题之后,用示波器看了一下波形,发现SPI引脚上没有输出。进而发现,对SPI寄存器进行读写的时候,无论写入是什么,读出的都是0。后来发现,原来是PCLK(也就是SPI模块的时钟)没有使能,囧。设置了寄存器之后,问题就解决了。
第二,CC2500驱动没有办法自动在/dev/目录下面创建节点。这个问题可以参考下面几篇文章:
http://blog.csdn.net/cjok376240497/article/details/6848536
整体来说,创建节点的工作是这样的:
我们通过udev来创建节点。但是,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,只要在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用class_device_create创建对应的设备。
换句话说,首先要为每一个设备创建一个类。然后用这个类去申请一个设备节点。
第三,在调试的过程中,发现只要一启动CC2500,那么液晶屏就熄灭了。调试了半天也没有找到原因。
最后发现,在配置S3C2440中GPGCON寄存器的时候,对寄存器直接进行了覆盖性的修改;而该寄存器还管理着LCD的电源...于是,对寄存器进行覆盖性修改的时候,悲剧了...
总结一下吧,在linux下2500驱动编写的过程中,如果涉及到寄存器级别的操作,和单片机一样,必须十分注意各个模块之间的关系,以及相关模块的寄存器配置,不要认为linux会全部给你配好!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top