cubieboard 之SPI的使用
来源:互联网 发布:软件开发项目预算表 编辑:程序博客网 时间:2024/05/25 13:34
折腾了将近一个月的SPI通信(如果是大神的话估计早搞出来了,但是收获还是蛮大,至少差不多搞懂了SPI子系统),总算小出成效了,Cubieboard上的SPI口,也算是打通了,在此要感谢hipboi等等网络上的大神对我的帮助,感谢CCTV。
首先,跟SPI通信相关的,主要有三个代码文件,spi_sunxi.c,spi.c,spidev.c。
spi_sunxi.c主要是全志A10的spi驱动,spi.c是整个spi子系统的中心,给spi_sunxi.c和spidev.c提供了接口,也起到了桥梁的作用
spidev.c主要是用来为用户空间读写spi提供接口,也就是在/dev/下面生成spi0.0等等这些读写文件。
要使全志的SPI能够通信,底层代码都已经写好了,我们只需要对配置文件(script.fex)进行相应的的更改就可以了。
spi_used = 1
spi_cs_bitmap = 1
spi_cs0 = port:PI10<3><default><default><default>
spi_sclk = port:PI11<3><default><default><default>
spi_mosi = port:PI12<3><default><default><default>
spi_miso = port:PI13<3><default><default><default>
其中,需要特别主要的是,理解spi_cs0 = port:PI10<3><default><default><default>
port:PI10就是说使用PI10这个引脚,<3>这个括号里面,值可以为0~7,如果配置为0,这个引脚代表GPIO输入,1代表GPIO
输出,至于2~7的值,根据引脚的不同,不同的值有不同的功能但是2~7主要是代表端口的复用,至于复用成什么端口,请参考
[url]http://linux-sunxi.org/A10/PIO[/url]
从图中可以看到,如果要用SPI,应该要使用MUX2,而我的fex文件,默认的是<3>,端口复用成了UART,所以这个地方一定要改,我就是因为这个地方没改,所以整了很久。
[spi_devices]
spi_dev_num = 1
[spi_board0]
modalias = "spidev"
max_speed_hz = 12000000
bus_num = 0
chip_select = 0
mode = 3
full_duplex = 0
manual_cs = 0
这需要注意的是modalias,这个名字要跟spidev.c中的相同.name = "spidev"。具体懂点驱动的应该知道为什么,还有就是全志的SPI不支持全双工。
以上配置完成以后,自己随便写个应用程序,或者往/dev/spidev0.0里面写点值,应该就有反应了
首先,跟SPI通信相关的,主要有三个代码文件,spi_sunxi.c,spi.c,spidev.c。
spi_sunxi.c主要是全志A10的spi驱动,spi.c是整个spi子系统的中心,给spi_sunxi.c和spidev.c提供了接口,也起到了桥梁的作用
spidev.c主要是用来为用户空间读写spi提供接口,也就是在/dev/下面生成spi0.0等等这些读写文件。
要使全志的SPI能够通信,底层代码都已经写好了,我们只需要对配置文件(script.fex)进行相应的的更改就可以了。
spi_used = 1
spi_cs_bitmap = 1
spi_cs0 = port:PI10<3><default><default><default>
spi_sclk = port:PI11<3><default><default><default>
spi_mosi = port:PI12<3><default><default><default>
spi_miso = port:PI13<3><default><default><default>
其中,需要特别主要的是,理解spi_cs0 = port:PI10<3><default><default><default>
port:PI10就是说使用PI10这个引脚,<3>这个括号里面,值可以为0~7,如果配置为0,这个引脚代表GPIO输入,1代表GPIO
输出,至于2~7的值,根据引脚的不同,不同的值有不同的功能但是2~7主要是代表端口的复用,至于复用成什么端口,请参考
[url]http://linux-sunxi.org/A10/PIO[/url]
从图中可以看到,如果要用SPI,应该要使用MUX2,而我的fex文件,默认的是<3>,端口复用成了UART,所以这个地方一定要改,我就是因为这个地方没改,所以整了很久。
[spi_devices]
spi_dev_num = 1
[spi_board0]
modalias = "spidev"
max_speed_hz = 12000000
bus_num = 0
chip_select = 0
mode = 3
full_duplex = 0
manual_cs = 0
这需要注意的是modalias,这个名字要跟spidev.c中的相同.name = "spidev"。具体懂点驱动的应该知道为什么,还有就是全志的SPI不支持全双工。
以上配置完成以后,自己随便写个应用程序,或者往/dev/spidev0.0里面写点值,应该就有反应了
0 0
- cubieboard 之SPI的使用
- STM32之SPI的使用
- SPI实例之FLASH芯的使用;
- cubieboard使用资料
- MQX之SPI使用
- 菜鸟的cubieboard之旅(一)--启动流程
- 菜鸟的cubieboard之旅(二)-SD卡镜像制作
- 菜鸟的cubieboard之旅-SD卡镜像制作
- cubieboard
- SPI DMA 的使用
- LPC2478的SPI使用
- DSP28335 SPI的使用
- SPI的使用场景
- cubieboard学习之网络设置
- STM32F0之SPI(使用固件库)
- SPI之从ServiceLoader联想到DriverManager的使用总结
- STM32的使用之SPI通信DMA模式
- STM32之SPI的思考
- 【C语言】模拟实现printf函数 可变参数列表的实战
- Servlet中实现用servletContext对象统计网站在线人数
- CSS样式,实现子标签在父标签中水平和垂直居中
- 数据持久化之四种方式
- NFS文件共享
- cubieboard 之SPI的使用
- sublime快捷键
- 活着的意义
- Demo02逻辑运算符__短路运算
- [Qingdao Regional]最好的周末
- android-控制屏幕常亮不锁屏
- android进阶------高性能编程---理解中
- COM 编程
- Python 金叉判定