全志A20配置使用spi。
Yao.GUET 2014-07-17,转载请注明出处:http://blog.youkuaiyun.com/Yao_GUET
A20上带有4个spi接口,由于Humming Bird A20只引出了SPI2,所以这里就以spi2为例,看一下fex文件是怎么设置的。
由于我拿到的linux内核上是已经有spi-sun7i的驱动代码文件,的民民主的所以没有代码的同鞋自己去下载patch包吧。
根据linux-sunxi中spi使用的文档,需要修改kernel的编译配置:
CONFIG_SPI_SUN4I=y
CONFIG_SPI=y
CONFIG_SPI_MASTER=y
CONFIG_EXPERIMENTAL=y
CONFIG_SPI_SPIDEV=y
做完这一步之后,还需要修改fex文件,由于我用的是android的系统,所以,配置文件位置如下:
a20_hummingbird_v3.0_v4/lichee/tools/pack/chips/sun7i/configs/android/wing-k70/sys_config.fex
"spi2_para"的配置:
- [spi2_para]
- spi_used = 1
- spi_cs_bitmap = 1
- spi_cs0 = port:PB14<2><default><default><default>
- spi_sclk = port:PB15<2><default><default><default>
- spi_mosi = port:PB16<2><default><default><default>
- spi_miso = port:PB17<2><default><default><default>
spi_used: =1 表示使用,=0则表示不使用;
spi_cs_bitmap:=1表示片选使用spi2_cs0,=2表示片选使用spi2_cs1,=3表示片选使用spi2_cs0和spi2_cs1;
我这里使用的是PB14-PB17这一组spi2接口,尖括号里面的2代表的是复用功能的选择(SPI)。
spi_devices设备数量设置
- [spi_devices]
- spi_dev_num = 1
spi_board设置
- [spi_board0]
- modalias = "spidev"
- max_speed_hz = 12000000
- bus_num = 2
- chip_select = 0
- mode = 0
- full_duplex = 0
- manual_cs = 0
max_speed_hz:最大传输速度
bus_num:这个比较的重要,是这个spi_board所对应的spi的总线号,这里我使用的是spi2,所以“bus_num=2”
mode:这个主要是设置同步时间的极性与相位
SPI MODE | CPOL | CPHA | 采样边缘 |
0 | 0 | 0 | 上升沿 |
1 | 0 | 1 | 下降沿 |
2 | 1 | 0 | 下降沿 |
3 | 1 | 1 | 上升沿 |
有兴趣的同鞋也可以自己看一下spi-sun7i的代码,就在/linux/drivers/spi/spi-sun7i.c
编译好内核,再打包生成img文件,烧写启动系统,你会在/dev目录发现spidev2.0这个设备,那说明,spi2应该可以正常使用了,,
====================以下转载:http://blog.youkuaiyun.com/jiangdou88/article/details/21288781==================
- ;spi configuration
- ;-------------------------------------------------------------------------------
- [spi0_para]
- spi_used = 1
- spi_cs_bitmap = 1
- spi_cs0 = port:PI10<2><default><default><default>
- spi_cs1 = port:PI14<2><default><default><default>
- spi_sclk = port:PI11<2><default><default><default>
- spi_mosi = port:PI12<2><default><default><default>
- spi_miso = port:PI13<2><default><default><default>
- ;mcp2515_int ->PH19 -> = port:PH19<2><0><default><default>
- ;MCP2515_RESET ->PI9 -> = port:PI09<2><1><2><default>
- ;MCP2515_CS ->PI10
- ;MCP2515_SCK ->PI11
- ;MCP2515_SI ->PI12
- ;MCP2515_SO ->PI13
- [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
配置
- private static final String mPathstr ="/sys/class/gpio_sw/P";
- private static final String mDataName = "/data";
- private static final String mPullName = "/pull";
- private static final String mDrvLevelName = "/drv_level";
- private static final String mMulSelName ="/mul_sel";
修改Kconfig
- comment "SPI Protocol Masters"
- config SPI_SPIDEV
- tristate "User mode SPI device driver support"
- #depends on EXPERIMENTAL
- default y
- help
- This supports user mode SPI protocol drivers.
- Note that this application programming interface is EXPERIMENTAL
- and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes.
adb shell
#cd dev
# ls ->如下:
3,编译Linux/\\192.168.94.129\jiang_dou\a20\A20-420-V12\lichee\linux-3.3\Documentation\spi/spidev-test.c
#adb push D:\spidev-test /
#adb shell
#chmod 777 spidev-test
# ./spidev-test -D /dev/spidev0.0
如下图: