匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“第020课 SPI裸板”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
第020课 SPI裸板
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
该页面已被保护以防止编辑和其他操作。
您可以查看与复制此页面的源代码。
=第001节_SPI协议介绍 = *配套视频:ARM裸机1期加强版->第20课_SPI->第001节_SPI协议介绍_P.mp4 *配套代码:023_spi_020->01th_spi_i2c_adc_jz2440_oled_020_002 *配套笔记: *实验环境:百问网Ubuntu16.04、Window7/Window10 *适用单板:JZ2440(原理适用所有Soc) 市面上的开发板很少接有SPI设备,但是SPI协议在工作中经常用到。我们开发了SPI模块,上面有SPI Flash和SPI OLED。OLED就是一块显示器。 我们裸板程序会涉及两部分: #用GPIO模拟SPI #用S3C2440的SPI控制器 我们先介绍下SPI协议,硬件框架如下: <img src="./lesson/lesson1/lesson1_001.jpg"> SCK:提供时钟 DO:作为数据输出 DI:作为数据输入 CS0/CS1:作为片选 同一时刻只能有一个SPI设备处于工作状态。 假设现在2440传输一个0x56数据给SPI Flash,时序如下: <img src="./lesson/lesson1/lesson1_002.jpg"> 首先CS0先拉低选中SPI Flash,0x56的二进制就是0b0101 0110,因此在每个SCK时钟周期,DO输出对应的电平。 SPI Flash会在每个时钟周期的上升沿读取D0上的电平。 在SPI协议中,有两个值来确定SPI的模式。 CPOL:表示SPICLK的初始电平,0为电平,1为高电平 CPHA:表示相位,即第一个还是第二个时钟沿采样数据,0为第一个时钟沿,1为第二个时钟沿 {| class="wikitable" |- ! CPOL !! CPHA !! 模式 !! 含义 |- | 0 || 0 || 0 || 初始电平为低电平,在第一个时钟沿采样数据 |- | 0 || 1 || 1 || 初始电平为低电平,在第二个时钟沿采样数据 |- | 1 || 0 || 2 || 初始电平为高电平,在第一个时钟沿采样数据 |- | 1 || 1 || 3 || 初始电平为高电平,在第二个时钟沿采样数据 |} 我们常用的是模式0和模式3,因为它们都是在上升沿采样数据,不用去在乎时钟的初始电平是什么,只要在上升沿采集数据就行。 极性选什么?格式选什么?通常去参考外接的模块的芯片手册。比如对于OLED,查看它的芯片手册时序部分: <img src="./lesson/lesson1/lesson1_003.jpg"> SCLK的初始电平我们并不需要关心,只要保证在上升沿采样数据就行。 ='''《《所有章节目录》》'''= <categorytree mode=all background*color:white;">ARM裸机加强版</categorytree> [[Category:ARM裸机加强版 ]]
返回至
第020课 SPI裸板
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志