stm32f10x单片机进阶--spi使用

  使用SPI与外部flash(MX25L6406EM21)IC通信

连接方式

                  

stm32f10x单片机进阶--spi使用

 

         

stm32f10x单片机进阶--spi使用

                  如上图所示,MCU通过SPI2与外部flash芯片进行相连接。

MCU spi2初始化

                

stm32f10x单片机进阶--spi使用

    定义SPI2 中所使用的SPI 端口号

                          

stm32f10x单片机进阶--spi使用

               spi2中 通信功能初始化

读数据与写数据

  指令说明

       查看flash芯片的datasheet,mx25芯片支持按照页来写,按照扇区来擦除。page_program 为 0x02    ,sector_erase为0x20。并且在向每个页中写数据前,必须先保证此页所在的扇区已经进行擦除操作。并且每一页最大写256byte ,一个扇区的大小为4Kbyte

写数据,按照页来写数据(写一页数据)

依据芯片写指令 0x06

void spi_flash_write_page(uint8_t* pBuffer,uint32_t write_address,uint16_t num_byte_to_write) //向页中写入数据,其中write_address必须为256的整数据部,即一页的开始位置, { uint16_t i=0; // debug_out("SpiPage:0x%08x Len:%d\r\n", write_address, num_byte_to_write); spi_flash_wait_busy(); //忙等待 spi_flash_write_enable(); spi_flash_wait_busy(); spi2_cs_low(); spi2_read_write_byte(MX25_PAGE_PROGRAM); spi2_read_write_byte((uint8_t) ( ((write_address) >> 16 )&0xFF) ); spi2_read_write_byte((uint8_t) ( ((write_address) >> 8 )&0xFF) ); spi2_read_write_byte((uint8_t) ( (write_address)&0xff ) ); for(i=0;i<num_byte_to_write;i++) { spi2_read_write_byte(pBuffer[i]); } spi2_cs_high(); spi_flash_wait_busy(); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfyxx.html