Am335x 应用层之SPI操作
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就是了
Am335x 应用层之SPI操作的更多相关文章
- KL25用SPI操作nor flash
KL25的SPI连接一个nor flash.该flash型号为FM25F04,支持SPI的模式0和模式3,要求高位先发送,在上升沿采集数据. 通常,SPI有4种模式,取决于CPOL与CPHA如何配置. ...
- STM32F10X SPI操作flash MX25L64读写数据(转)
源:STM32F10X SPI操作flash MX25L64读写数据 前一段时间在弄SPI,之前没接触过嵌入式外围应用,就是单片机也只接触过串口通信,且也是在学校的时候了.从离开手机硬件测试岗位后,自 ...
- SPI操作flash MX25L64读写数据
STM32F10X SPI操作flash MX25L64读写数据 简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信.ARM主控芯片STM32F103,flash芯片 ...
- Mini2440 通过 SPI 操作 OLED (裸板下使用 SPI 控制器)
在裸板下使用 SPI 的话,有两种方法可选: 使用 IO 口模拟 SPI 进行操作 使用 SPI 控制器进行操作 这里我们选用控制器的方式,简单方便. 初始化 SPI static void SPIC ...
- spi数据KL25用SPI操作nor flash
最近研究spi数据,稍微总结一下,以后继续补充: KL25的SPI连接一个nor flash.该flash型号为FM25F04,支撑SPI的模式0和模式3,要求高位先发送,在上升沿采集数据. 通常,S ...
- am335x gpio 模拟 spi 驱动添加
kernel 内 make menuconfig // make menuconfig Device Drivers ---> [*] SPI support ---> <*> ...
- Linux应用层直接操作GPIO
Linux应用层直接操作GPIO 在一个老手的指导下,应用层可以直接操作GPIO,具体指设置GPIO的输入输出以及输出电平高或者低.这个大大地提高了灵活性,官方的文档有GPIO Sysfs Inter ...
- ADXL345经验总结,采用SPI和I2C总线操作
一. ADXL345简介 ADXL345是ADI公司推出的三轴(x,y,z)iMEMS数字加速度计(digital accelerometer),具有在16G下高分辨率(13Bit)测量能 ...
- spi flash 操作
W25Q16V 是华邦出的一颗 spi flash. 25系列是比较通用的一个系列. 后面的数字 16 跟容量有关, 16 表示 16Mbits, 相当于 2MB. 与此类似的还有 W25Q128V ...
随机推荐
- Thinkphp学习笔记-删除缓存
Thinkphp的缓存数据在Cach文件夹下的Home文件夹下的文临时文件 清除方法:将缓存文件删除就可以了
- github 排名前100的项目
dotnet/roslyn The .NET Compiler Platform ("Roslyn") provides open-source C# and Visual Bas ...
- Netbeans配合xdebug调试
http://xdebug.org/download.php 下载对应的xdebug的dll不知道php文件中的ext文件夹中 并且加入以下配置在php.info 然后重启apche zend_ext ...
- 2014年七月最佳jQuery插件荟萃
本月的jQuery插件荟萃我们将介绍几款非常不错的jQuery插件,涵盖了表单,幻灯,页面设计等等方面,相信大家肯定会喜欢! Select or Die 一款帮助开发者美化并且强化选择框的jQuery ...
- MPMoviePlayerViewController 视频播放黑屏
MPMoviePlayerViewController 视频播放黑屏 今天用视频做本地视频播放:使用 MPMoviePlayerViewController 老是出现黑屏: 结果发现是一个 很坑爹的问 ...
- @SuppressWarnings 参数列表信息
- 阿里云服务器 centos7 ftp安装
昨天租了阿里云服务器一个月,想玩一下linux系统,结果想用ftp上传本地文件的时候,发现用不了,结果在安装配置的时候折腾了几个小时,在网上查了无数的资料,有的说要改配置文件,有的说要关防火墙,说啥的 ...
- 执行次数最多的sql语句
执行次数最多的sql语句 * FROM ( creation_time N'语句编译时间' ,DB_NAME(st.dbid) AS dbname ,OBJECT_NAME(st.objectid) ...
- oracle 存储过程 调用动态sql
oracle 存储过程 调用动态sql CreationTime--2018年8月16日11点25分 Author:Marydon 1.错误实现方式 --开始时间拼接' 00:00:00' V_S ...
- Android 自己定义View (四) 视频音量调控
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24529807 今天没事逛eoe,看见有人求助要做一个以下的效果,我看以下一哥们说 ...