- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.串行外围设备接口入门(Introduction to the Serial Peripheral Interface)
Serial Peripheral Interface (SPI)是一种同步串行数据传输协议,用于近距离时,微控制器(Microcontrollers),如Arduino,与其他外围设备的快速通信。他也可以用于2个微控制器的通讯。
SPI通讯通常有一个主设备(通常是Microcontrollers),用于控制外围设备。通常会有3种线路通用于各类设备的方法。
-Master In Slave Out(MISO)- Slave line,用于Slave向Master发送数据
-Master Out Slave In(MOSI)- Master line,用于Master向Slave发送数据
-Serial Clock(SCK)- 时钟脉冲,主设备用于同步数据传输
-Slave Select pin- 分配给所有的设备,用于enable/disable指定的设备,同时用于避免由于线路忙导致的错误传输。
SPI最大的问题在于它的标准太不严格了,这导致各个设备在实现它的时候都有一些不同,这就意味着当我们在编写接口代码的时候必须仔细阅读设备数据参数。通常来说有编号为0-3的3种传输模式(不是4种么?)这些模式控制数据是在时钟信号的高电平还是低电平传入或传出,以及在高或低电平时时钟无效。
所有的SPI设置都由Arduino SPI控制寄存器(SPCR)来决定。这个寄存器就是微控制器内存的一个字节,它是可读写的。寄存器提供的服务通常有3类:控制、数据和状态。
控制寄存器(SPCR)编码设置控制多种微控制器的功能。通常控制寄存器中的一个位影响某个特定的设置,比如速度和极性(这个是啥?)
数据寄存器(SPDR)仅仅hold住了一个字节。比如,SPI数据寄存器hold住了要发往MOSI线的一个字节,或者这个数据是要从MISO线传入的。
状态寄存器(SPSR)根据多种微控制器的条件改变其状态。比如,SPI状态寄存器(SPSR)的第七位被设置为1表示有数据从SPI传入或传出。
SPI控制寄存器(SPCR)共有8位,每一个都控制了一种特定的SPI设置。
SPIE:置为1时,表示enable SPI的中断
SPE:置为1时,表示enable SPI
DORD:发送数据时,设置为1表示最低有效位,0表示最高有效位。请各自脑补最低有效位和最高有效位。。。
MSTR:设置为1表示Arduino为master模式,0为slave模式
CPOL:设置为1时,数据时钟在高时无效,设置为0时,在低时无效
CPHA:设置为1时,时钟低电平时是Samples data(样本数据?),0时时钟高电平是Sampledata
SPR1和SPR0:设置SPI的速度,00是最快的(4MHz),11是最慢的(250KHz)
这些意味着当对一个新的SPI设备编码的时候,我们需要注意一些事情并根据如下设置SPCR:
- 数据传入是最高有效位(MSB)还是最低有效位(LSB)?
- 数据时钟无效是在高还是低?
- samples是在时钟脉冲上升沿还是下降沿?
- SPI 运行的速度是多少?
你还要感受一下feel一下你的芯片,在你设置好之后需要暂停多久才能继续?Let‘s go !
2.串行EEPROM简介
AT25HP512是一个65536字节串行EEPROM。它支持SPI的模式0-3,在10MHz,5V的环境下运行,同时也可以在1.8v的低速下运行。他的内存被组织成512个页,每个页有128字节。他每次只能写入128字节,但是可以同时读出1-128字节的数据,这个设备同时提供了多种程度的写保护,但这里不涉及这个部分。
enable这个设备只需要让片选信号CS为低即可。指令使用8位的opcodes来发送,同时在时钟上升沿传入数据,大概使用10微秒写入1个页的数据,所以在每个EEPROM的的写程序后面都应该等待10ms。
3.面包板的准备
将AT25HP512芯片插入面包板,EEPROM的3,7,8引脚接到5V,引脚4接地。
红色的线接+5V,GND线是黑色
EERPOM的引脚1连接Arduino的引脚10(Slave 片选),EEPROM的引脚2连接Arduino的引脚12(Master In Slave Out - MISO),EEPROM的引脚5连接Arduino的引脚11(Master Out Slave In - MOSI),同时EEPROM的引脚6连接Arduino的引脚13(串口时钟 SCK)。
4.Arduino SPI 编程
现在我们要编写能让Arduino和EEPROM进行SPI通信的代码了。在启动代码中,这个程序填充128字节,或者一个EEPROM
文档评论(0)