第二节 通讯及总线-SPI总线.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二节 通讯及总线-SPI总线

Stm32之SPI配置 完整配置代码: unsigned short temp=0; temp |= 0x0008;//定义波特率为18M Hz temp |= 0x0003;//定义极性及相位关系,为11 temp =0xF77F;//定义8位数据格式,且高位在前传输 temp |= 0x0200;//NSS引脚工作在软件模式下 temp =0111 1011 1111 1111=0x7BFF;//全双工模式 temp |= 0x0042;//配置为主模式,并启动SPI 接下来,即向SPI1-DR寄存器中写或读数即可,实现发送和接收 Stm32之SPI读写 SPI_FLASH_SendByte(0x9F); SPI1-DR = 0x9F; Temp0 = SPI_FLASH_SendByte(Dummy_Byte); Temp1 = SPI_FLASH_SendByte(Dummy_Byte); Temp2 = SPI_FLASH_SendByte(Dummy_Byte); Temp0 =SPI1-DR Temp1 =SPI1-DR Temp2 =SPI1-DR 具体读写数据,需根据从设备的器件要求 Stm32之SPI读写 M25P64操作 The memory is organized as: ?? 8388608 bytes (8 bits each) ?? 128 sectors (512 Kbits, 65536 bytes each) ?? 32768 pages (256 bytes each). 每页256个字节 256个页组成一个扇区 128个扇区组成整个块(bulk或block) 允许写页,写不支持扇区和块 擦除只支持扇区和块 Flash中默认为0,写操作其实是1-0改写 对应擦出操作,即是0-1的改写。 Stm32之SPI读写 M25P64操作 1、首先拉低片选,操作完成后,拉高片选 SPI_FLASH_CS_LOW(); SPI_FLASH_SendByte(0x9F); Temp0 = SPI_FLASH_SendByte(Dummy_Byte); Temp1 = SPI_FLASH_SendByte(Dummy_Byte); Temp2 = SPI_FLASH_SendByte(Dummy_Byte); SPI_FLASH_CS_HIGH(); Stm32之SPI读写 M25P64操作 2、写使能 步骤:拉低片选,发送指令,拉高片选 SPI_FLASH_CS_LOW(); SPI_FLASH_SendByte(WREN);\\ 0x06 指令码 SPI_FLASH_CS_HIGH(); Stm32之SPI读写 3、擦除操作 步骤:写使能,拉低片选,发送擦除指令,发送擦除地址, 拉高片选 SPI_FLASH_WriteEnable(); SPI_FLASH_CS_LOW(); SPI_FLASH_SendByte(SE);\\0xD8,扇区擦除指令 SPI_FLASH_SendByte((SectorAddr 0xFF0000) 16); SPI_FLASH_SendByte((SectorAddr 0xFF00) 8); SPI_FLASH_SendByte(SectorAddr 0xFF); SPI_FLASH_CS_HIGH(); Stm32之SPI读写 4、写操作 步骤:擦除目标扇区,写使能,拉低片选,发送写指令, 发送写地址,循环DR寄存器中写数据发送,拉高片选 SPI_FLASH_SectorErase(FLASH_SectorToErase); SPI_FLASH_WriteEnable(); SPI_FLASH_CS_LOW(); SPI_FLASH_SendByte(WRITE);\\0x02,扇区擦除指令 SPI_FLASH_SendByte((SectorAddr 0xFF0000) 16); SPI_FLASH_SendByte((SectorAddr 0xFF00) 8); SPI_FLASH_SendByte(SectorAddr 0xFF); while (NumByteToWrite--) { SPI_FLASH_SendByte(*pBuffer); pBuffer++; } SPI_FLASH_CS_HIGH(); Stm32之SPI读写 4、读操作 步骤:拉低片选,发送读指令,发送读地址,循环读DR寄存器 拉高片选 SPI_FLASH_CS_LOW(); SPI_FLASH_SendByte(READ); SPI_FLA

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档