移动端网页设计规范,seo自动排名软件,免费招聘网站有哪些,备案域名卖出后涉赌怎么办一、SPI总线介绍SPI#xff0c;是英语Serial Peripheral Interface的缩写#xff0c;顾名思义就是串行外围设备接口。SPI#xff0c;是一种高速的#xff0c;全双工#xff0c;同步的通信总线#xff0c;并且在芯片的管脚上只占用四根线#xff0c;节约了芯片的管脚是英语Serial Peripheral Interface的缩写顾名思义就是串行外围设备接口。SPI是一种高速的全双工同步的通信总线并且在芯片的管脚上只占用四根线节约了芯片的管脚同时为PCB的布局上节省空间提供方便正是出于这种简单易用的特性现在越来越多的芯片集成了这种通信协议。SPI是一个环形总线结构由ss(cs)、sck、sdi、sdo构成其时序其实很简单主要是在sck的控制下两个双向移位寄存器进行数据交换。上升沿发送、下降沿接收、高位先发送。上升沿到来的时候sdo上的电平将被发送到从设备的寄存器中。下降沿到来的时候sdi上的电平将被接收到主设备的寄存器中。假设主机和从机初始化就绪并且主机的sbuff0xaa (10101010)从机的sbuff0x55 (01010101)下面将分步对spi的8个时钟周期的数据情况演示一遍(假设上升沿发送数据)。---------------------------------------------------脉冲 主机sbuff 从机sbuff sdi sdo(到从设备)---------------------------------------------------0 00-0 10101010 01010101 0 0---------------------------------------------------1 0--1 0101010x 10101011 0 11 1--0 01010100 10101011 0 1---------------------------------------------------2 0--1 1010100x 01010110 1 02 1--0 10101001 01010110 1 0---------------------------------------------------3 0--1 0101001x 10101101 0 13 1--0 01010010 10101101 0 1---------------------------------------------------4 0--1 1010010x 01011010 1 04 1--0 10100101 01011010 1 0---------------------------------------------------5 0--1 0100101x 10110101 0 15 1--0 01001010 10110101 0 1---------------------------------------------------6 0--1 1001010x 01101010 1 06 1--0 10010101 01101010 1 0---------------------------------------------------7 0--1 0010101x 11010101 0 17 1--0 00101010 11010101 0 1---------------------------------------------------8 0--1 0101010x 10101010 1 08 1--0 01010101 10101010 1 0全双工通讯一次传2个字节---------------------------------------------------这样就完成了两个寄存器8位的交换上面的0--1表示上升沿、1--0表示下降沿sdi、 sdo相对于主机而言的。根据以上分析一个完整的传送周期是16位即两个字节因为首先主机要发送命令过去然后从机根据主机的名准备数据主机在下一个8位时钟周期才把数据读回来。SPI总线是Motorola公司推出的三线同步接口同步串行3线方式进行通信:一条时钟线SCK一条数据输入线MOSI一条数据输出线MISO;用于 CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。可以同时发送和接受串行数据;可以当作主机或从及工作;提供频率可编程始终;发送结束终端标志;写冲突保护;总写竞争保护.SPI总线有四种工作方式(SP0, SP1, SP2, SP3)其中使用的最为广泛的是SPI0和SPI3方式。SPI模块为了和外设进行数据交换根据外设工作要求其输出串行同步时钟极性和相位可以进行配置时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL0串行同步时钟的空闲状态为低电平如果CPOL1串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA0在串行同步时钟的第一个跳变沿(上升或下降)数据被采样如果CPHA1在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。 SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI时序图详解-SPI接口在模式0下输出第一位数据的时刻SPI接口在模式0下输出第一位数据的时刻SPI接口有四种不同的数据传输时序取决于CPOL和CPHL这两位的组合。图1中表现了这四种时序时序与CPOL、CPHL的关系也可以从图中看出。图1CPOL是用来决定SCK时钟信号空闲时的电平CPOL0空闲电平为低电平CPOL1时空闲电平为高电平。CPHA是用来决定采样时刻的CPHA0在每个周期的第一个时钟沿采样CPHA1在每个周期的第二个时钟沿采样。由于我使用的器件工作在模式0这种时序(CPOL0CPHA0)所以将图1简化为图2只关注模式0的时序。图2我们来关注SCK的第一个时钟周期在时钟的前沿采样数据(上升沿第一个时钟沿)在时钟的后沿输出数据(下降沿第二个时钟沿)。首先来看主器件主器件的输出口(MOSI)输出的数据bit1在时钟的前沿被从器件采样那主器件是在何时刻输出bit1的呢bit1的输出时刻实际上在SCK信号有效以前比 SCK的上升沿还要早半个时钟周期。bit1的输出时刻与SSEL信号没有关系。再来看从器件主器件的输入口MISO同样是在时钟的前沿采样从器件输出的bit1的那从器件又是在何时刻输出bit1的呢。从器件是在SSEL信号有效后立即输出bit1尽管此时SCK信号还没有起效。关于上面的主器件和从器件输出bit1位的时刻可以从图3、4中得到验证。图3注意图3中CS信号有效后(低电平有效注意CS下降沿后发生的情况)故意用延时程序延时了一段时间之后再向数据寄存器写入了要发送的数据来观察主器件输出bit1情况(MOSI)可以看出bit1(值为1)是在SCK信号有效之前的半个时钟周期的时刻开始输出的(与CS信号无关)到了SCK的第一个时钟周期的上升沿正好被从器件采样。图4图4中注意看CS和MISO信号。我们可以看出CS信号有效后从器件立刻输出了bit1(值为1)。通常我们进行的spi操作都是16位的。图5记录了第一个字节和第二个字节间的相互衔接的过程。第一个字节的最后一位在SCK的上升沿被采样随后的SCK下降沿从器件就输出了第二个字节的第一位。二、SPI总线协议介绍(接口定义,传输时序)技术性能SPI接口是Motorola 首先提出的全双工三线同步串行外围接口采用主从模式(Master Slave)架构支持多slave模式应用一般仅支持单Master。时钟由Master控制在时钟移位脉冲下数据按位传输高位在前低位在后(MSB first)SPI接口有2根单向数据线为全双工通信目前应用中的数据速率可达几Mbps的水平。2、接口定义SPI接口共有4根信号线分别是设备选择线、时钟线、串行输出数据线、串行输入数据线。(1)MOSI主器件数据输出从器件数据输入(2)MISO主器件数据输入从器件数据输出(3)SCLK 时钟信号由主器件产生(4)/SS从器件使能信号由主器件控制3、内部结构4、传输时序SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位在主器件产生的从器件使能信号和移位脉冲下按位传输高位在前低位在后。如下图所示在SCLK的下降沿上数据改变上升沿一位数据被存入移位寄存器。SPI接口没有指定的流控制没有应答机制确认是否接收到数据。三、时序图浅析接下来进入LCD1602使用的重点操作时序。操作时序永远使用是任何一片IC芯片的最主要的内容。一个芯片的所有使用细节都会在它的官方器件手册上包含。所以使用一个器件事情要充分做好的第一件事就是要把它的器件手册上有用的内容提取掌握。介于中国目前的芯片设计能力有限所以大部分的器件都是外国几个IC巨头比如TI、AT、MAXIM这些公司生产的器件资料自然也是英文的多所以英文的基础要在阅读这些数据手册时得到提高哦。即便有中文翻译版本还是建议看英文原版看不懂时不妨再参考中文版这样比较利于提高。我们首先来看1602的引脚定义,1602的引脚是很整齐的SIP单列直插封装所以器件手册只给出了引脚的功能数据表我们只需要关注以下几个管脚3脚VL液晶显示偏压信号用于调整LCD1602的显示对比度一般会外接电位器用以调整偏压信号注意此脚电压为0时可以得到最强的对比度。4脚RS数据/命令选择端当此脚为高电平时可以对1602进行数据字节的传输操作而为电平时则是进行命令字节的传输操作。命令字节即是用来对LCD1602的一些工作方式作设置的字节数据字节即使用以在1602上显示的字节。值得一提的是LCD1602的数据是8位的。5脚R/W读写选择端。当此脚为高电平可对LCD1602进行读数据操作反之进行写数据操作。笔者认为此脚其实用处不大直接接地永久置为低电平也不会影响其正常工作。但是尚未经过复杂系统验证保留此意见。6脚E使能信号其实是LCD1602的数据控制时钟信号利用该信号的上升沿实现对LCD1602的数据传输。7~14脚8位并行数据口使得对LCD1602的数据读写大为方便。现在来看LCD1602的操作时序在此我们可以先不读出它的数据的状态或者数据本身。所以只需要看两个写时序①当我们要写指令字设置LCD1602的工作方式时需要把RS置为低电平RW置为低电平然后将数据送到数据口D0~D7最后E引脚一个高脉冲将数据写入。②当我们要写入数据字在1602上实现显示时需要把RS置为高电平RW置为低电平然后将数据送到数据口D0~D7最后E引脚一个高脉冲将数据写入。发现了么写指令和写数据差别仅仅在于RS的电平不一样而已。以下是LCD1602的时序图大家要慢慢学会看时序图要知道操作一个器件的精华便蕴藏在其中看懂看准了时序你操控这个芯片就是非常容易的事了。1602的时序是我见过的一个最简单的时序1、注意时间轴如果没有标明(其实大部分也都是不标明的)那么从左往右的方向为时间正向轴即时间在增长。2、上图框出并注明了看懂此图的一些常识(1).时序图最左边一般是某一根引脚的标识表示此行图线体现该引脚的变化上图分别标明了RS、R/W、E、DB0~DB7四类引脚的时序变化。(2).有线交叉状的部分表示电平在变化如上所标注。(3).应该比较容易理解如上图右上角所示两条平行线分别对应高低电平也正好吻合(2)中电平变化的说法。(4).上图下密封的菱形部分注意要密封表示数据有效Valid Data这个词也显示了这点。3、需要十分严重注意的是时序图里各个引脚的电平变化基于的时间轴是一致的。一定要严格按照时间轴的增长方向来精确地观察时序图。要让器件严格的遵守时序图的变化。在类似于18B20这样的单总线器件对此要求尤为严格。4、以上几点并不是LCD1602的时序图所特有的绝大部分的时序图都遵循着这样的一般规则所以大家要慢慢的习惯于这样的规则。也许你还注意到了上面有许多关于时间的标注这也是个十分重要的信息这些时间的标注表明了某些状态所要维持的最短或最长时间。因为器件的工作速度也是有限的一般都跟不上主控芯片的速度所以它们直接之间要有时序配合。话说现在各种处理器的主频也是疯狂增长日后搞不好出现个双核单片机也不一定就是梦话。下面是时序参数表懂得估计主控芯片的指令时间可以在官方数据手册上查到MCU的一些级别参数。比如我们现在用AVR M16做为主控芯片外部12MHz晶振指令周期就是一个时钟周期为(1/12MHz)us所以至少确定了它执行一条指令的时间是us级别的。我们看到以上给的时间参数全部是ns级别的所以即便我们在程序里不加延时程序也应该可以很好的配合LCD1602的时序要求了。怎么看这个表呢很简单我们在时序图里可以找到TR1对应时序参数表可以查到这个是E上升沿/下降沿时间最大值为25ns表示E引脚上的电平变化必须在最大为25ns之内的时间完成。大家看是不是这个意思现在我来解读我对这个时序图的理解当要写命令字节的时候时间由左往右RS变为低电平R/W变为低电平注意看是RS的状态先变化完成。然后这时DB0~DB7上数据进入有效阶段接着E引脚有一个整脉冲的跳变接着要维持时间最小值为tpw400ns的E脉冲宽度。然后E引脚负跳变RS电平变化R/W电平变化。这样便是一个完整的LCD1602写命令的时序。下面来看看CEPARK AVR开发板的1602显示部分原理图如你所见KID画的这个也太能省了就直接接1k电阻了事…….只有一点要说就是这个解法VL脚也就是偏压信号脚的电压就是不可调的了即对比度固定。作几点说明1、 LCD1602对写进去的数据字节呢是以ASCII码识别的所以写进去用以显示的字符数据必须是某一个ADCII码当然如果你不想查ASCII表的话可以用字符来代替即用单引号包含的字符常量。所以也由此推出’0’和30H(0的ASCII码)是等价的。2、操作1602要先对1602进行初始化数据手册里写的比较清楚并且对各个命令字的写入并没有先后要求。3、 1602是有自定义字符的功能的大家熟悉基本操作之后可以尝试自行拓展4、在每次写完数据之后应该要将E引脚置为低电平为下一次E的高脉冲做准备。延伸来说这叫释放时钟线要养成释放时钟线的好习惯。对配合时序大有裨益。5、可以将所要显示的字符一次定义在一个字符数组里以调用字符数组的形式调用显示数据这样程序会变得简洁而高效。6、记住时序的要求往往是对最小时间有要求在你严格配合时序的情况下仍然的不到理想的结果时可以尝试插入延时。这个并不违反时序的要求。况且相当多的器件手册并没有详细的讲述最小时间要求。