Am335x 应用层之SPI操作
来源:互联网 发布:淘宝极有家和中国质造 编辑:程序博客网 时间:2024/04/26 01:52
我们先来看一下SPI的时序图,下面的内容转自http://blog.chinaunix.net/uid-8307196-id-2032955.html
SPI接口有四种不同的数据传输时序,取决于CPOL和CPHL这两位的组合。图1中表现了这四种时序,
时序与CPOL、CPHL的关系也可以从图中看出。
图1
CPOL是用来决定SCK时钟信号空闲时的电平,CPOL=0,空闲电平为低电平,CPOL=1时,
空闲电平为高电平。CPHA是用来决定采样时刻的,CPHA=0,在每个周期的第一个时钟沿采样,
CPHA=1,在每个周期的第二个时钟沿采样。
经由上面我们就可以比对实际设备的时序来对SPI的MODE进行配置了。
找到头文件里的SPI mode的一定义如下:
- #define SPI_CPHA 0x01 /* clock phase */
- #define SPI_CPOL 0x02 /* clock polarity */
- #define SPI_MODE_0 (0|0) /* (original MicroWire) */
- #define SPI_MODE_1 (0|SPI_CPHA)
- #define SPI_MODE_2 (SPI_CPOL|0)
- #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA)
- 大家很容易可以分析出SPI四种模式的配置了吧,后面的速率,字节数就都很好配置了。
- int Spi0Mode = SPI_MODE_2; //配置模式
- ioctl(Spi0Handle, SPI_IOC_WR_MODE, &Spi0Mode);
- ioctl(Spi0Handle, SPI_IOC_RD_MODE, &Spi0Mode);
- struct spi_ioc_transfer sSpi0TR;
- sSpi0TR.speed_hz = 6000000; //配置速率6M
- ioctl(Spi0Handle, SPI_IOC_WR_MAX_SPEED_HZ, &sSpi0TR.speed_hz);
- ioctl(Spi0Handle, SPI_IOC_RD_MAX_SPEED_HZ, &sSpi0TR.speed_hz);
- sSpi0TR.bits_per_word =16; //配置字节数
- sSpi0TR.len = 2;
- ioctl(Spi0Handle, SPI_IOC_WR_BITS_PER_WORD, &sSpi0TR.bits_per_word);
- ioctl(Spi0Handle, SPI_IOC_RD_BITS_PER_WORD, &sSpi0TR.bits_per_word);
配置好了后,就是读写了,读写需要注意的参数有两个地方:1,tx_buf,rx_buf这两个参数决定了SPI的读写,如果只读或只写的情况下,就把另一个不用的参数=NULL。2,SPI_IOC_MESSAGE(N)这里的N决定了SPI操作的次数,如果你想连接读写几次SPI就改变N就是了
0 0
- Am335x 应用层之SPI操作
- spi应用层写法
- mini2440 SPI驱动移植 既自己总结的应用层的操作
- 在am335x添加spi设备
- 《计算机网络》之应用层
- 计算机网络之应用层
- 计算机网络之应用层
- 计算机网络之应用层
- 计算机网络之应用层
- 计算机网络之应用层
- AM335X之inittab
- AM335X之TI 文档
- Am335x 之GPIO控制
- Am335x 之GPIO控制
- Android应用层操作GPIO
- Android应用层操作GPIO
- Linux SPI总线和设备驱动架构之二:SPI通用接口层
- Linux SPI总线和设备驱动架构之二:SPI通用接口层
- OCP-1Z0-053-200题-46题-624
- 随笔
- hdu 2602 Bone Collector
- UML之用例图(二)
- 软考杂记
- Am335x 应用层之SPI操作
- Ubuntu 安全检查
- 传智播客暖春大行动纪实:春节不回家,有爱咱不怕!
- fatal error C1083: 无法打开预编译头文件
- 静态内部类提高封装性
- 用Unity注入webservice
- ARM开发板哪家的好,怎么选择开发板
- excel vba真正的动态数组实例
- OCP-1Z0-053-200题-45题-623