历史上的今天
返回首页

历史上的今天

今天是:2024年12月21日(星期六)

2020年12月21日 | 神舟IV学习笔记(十)SPI存储W25X16

2020-12-21 来源:eefocus

SPI是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola首先在其 MC68HCXX 系列处理器上定义的。SPI 接口主要应用在  EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,STM32 也有 SPI 接口。


SPI 接口一般使用 4 条线:

MISO  主设备数据输入,从设备数据输出。

MOSI  主设备数据输出,从设备数据输入。

SCLK 时钟信号,由主设备产生。

CS 从设备片选信号,由主设备控制。


SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。SPI总线四种工作方式SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果 CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI  主模块和与之通信的外设备时钟相位和极性应该一致。


STM32 的 SPI 功能很强大,SPI 时钟最多可以到 18Mhz,支持 DMA,可以配置为 SPI 协议或者 I2S 协议。


SPI1的使用就介绍到这里,接下来介绍一下 W25X16。W25X16是华邦公司推出的继W25X10/20/40/80(从 1Mb~8Mb)后容量更大的 FLASH 产品,W25X16 的容量为 16Mb,还有容量更大的 W25X32/64,ALIENTEK 所选择的 W25X16 容量为 16Mb,也就是 2M 字节,同AT45DB161 是一样大小的。 W25X16 将 2M 的容量分为 32 个块(Block),每个块大小为 64K 字节,每个块又分为 16个扇区(Sector),每个扇区4K个字节。W25X16 的最少擦除单位为一个扇区,也就是每次必须擦除 4K 个字节。这样我们需要给 W25X16 开辟一个至少 4K 的缓存区,这样对 SRAM 要求比较高(相对于 AT45DB161 来说),但是它有价格及供货上的优势。 W25X16 的差些周期为10000 次,具有20 年的数据保存期限,支持电压为2.7~3.6V,W25X16支持标准的 SPI,还支持双输出的 SPI,最大 SPI 时钟可以到 75Mhz(双输出时相当于 150Mhz),更多的 W25X16 的介绍,请参考 W25X16 的 DATASHEET。


软件我把W25X16需要调用的函数封装到一个文件中

void W25X16_Configuration(void);

void SPI_FLASH_SectorErase(u32 SectorAddr);

void SPI_FLASH_BulkErase(void);//Erases the entire FLASH

void SPI_FLASH_PageWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite);

void SPI_FLASH_BufferWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite);

void SPI_FLASH_BufferRead(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead);

u32 SPI_FLASH_ReadID(void);//是常量0XEF3015,可以用于判断是否存在W32X16芯片

u32 SPI_FLASH_ReadDeviceID(void);

void SPI_FLASH_StartReadSequence(u32 ReadAddr);

void SPI_Flash_PowerDown(void);

void SPI_Flash_WAKEUP(void);


我们实现写一些数据到FLASH里,再读出来看看是不是一样的,测试结果

看出能够检测到FLASH,写入一些字符串,也能读出。


推荐阅读

史海拾趣

Honeywell公司的发展小趣事

背景:进入20世纪后,霍尼韦尔在恒温器领域的技术不断成熟,同时,另一家名为霍尼韦尔供暖专业公司的企业也在加热器领域取得了显著成就。

发展:1927年,明尼阿波利斯热调节器公司与霍尼韦尔供暖专业公司合并,创立了明尼阿波利斯-霍尼韦尔调节器公司。这次合并不仅增强了公司的技术实力,还拓展了业务范围,使公司成为当时最大的高品质珠宝钟表生产商(尽管这与电子行业的直接关联较小,但反映了公司扩张的雄心)。

关键事件:合并后,公司继续深耕工业自动化领域,并收购了布朗仪器公司,进一步巩固了在全球工业控制器和指示器市场的领导地位。

品赞(G-Switch)公司的发展小趣事
能够准确区分不同类型的故障,避免误动作。
Elcos AG公司的发展小趣事

在电子科技日新月异的21世纪初,Elcos AG由一群志同道合的电子工程师创立。他们看到了电子元器件市场中的机遇,决定专注于研发和生产高性能的电子元器件。初始阶段,公司面临着资金紧张、技术挑战和市场认知度低的困境。然而,凭借对技术的执着和对市场的敏锐洞察,Elcos AG逐步攻克了技术难题,并通过与几家小型电子产品制造商的合作,打开了市场的大门。

Gennum ( Semtech )公司的发展小趣事
确保所有元件都已正确安装,没有损坏或接错。
Bombardier Inc公司的发展小趣事

随着全球航空市场的不断变化,庞巴迪公司在商用航空领域也取得了显著成就。其生产的CRJ系列区域喷气客机和Q系列涡桨飞机在全球范围内广受欢迎。这些飞机配备了先进的电子设备和系统,提供了更高的安全性和舒适性。庞巴迪还推出了C系列单通道中距客机,该机型以其环保、经济和人性化的设计赢得了市场的广泛认可。

GainSpan ( Telit)公司的发展小趣事

随着业务的不断扩展和技术实力的提升,风华电子厂于1993年实施股份制改革,并更名为广东风华高新科技股份有限公司。1996年,公司在深圳证券交易所成功上市(证券简称风华高科,证券代码000636),成为电子元器件行业的重要一员。上市不仅为公司筹集了更多资金,也进一步提升了公司的知名度和市场竞争力。

问答坊 | AI 解惑

51单片机IO端口操作的一个有趣现象

我想实现P1.1端口跟随P1.4端口同步输出,都是驱动LED,P1.4端口使用定时器定时翻转,主循环程序随时判断P1.4状态,同步驱动P1.1。  开始我是这样写的:   看来没问题,在KEIL仿真运行也没问题,可是下载到89S52中,只见OUT闪烁,LED根本不动, ...…

查看全部问答>

贡献一些ARM开发板原理图

2440的就不用贡献了,传下S3C2450开发板的原理图 [ 本帖最后由 open82977352 于 2010-1-12 18:43 编辑 ]…

查看全部问答>

Toyato的 Hybrid和汽车方面的课程资料

无意在网上找到的,因此把目录整理出来,有兄弟需要的发邮件给我yulzhu@gmail.com,注明需要哪一部分,直接发怕有些问题。 混合动力有关材料 Toyota Series - Hybrid Hybrid01 Hybrid System Overview.pdf   Hybrid02 Hybrid System ...…

查看全部问答>

现代功率模块及器件应用技术(6).

现代功率模块及器件应用技术(6).…

查看全部问答>

REMAP、Bootloader、Flashloader

  1、REMAP:    提到REMAP。首先应想到什么是MAP,英语不好,开始就断章取义,MAP就是地图嘛,Memory Map就是存储器地图,不过这个地图的参考坐标不是经纬度,而是地址,进而叫做存储器映射。由于要适应不同存储器容量要求的 ...…

查看全部问答>

我彻底的无奈了!

大家好:最近做一个GPRS收发短信的实验,接收短信后解析出号码和内容,然后回复给该手机需要的内容, 但是老是出现问题,可以解析出号码和内容,请高手帮忙看一下啊,MC39i的模块。 while( 1 )    {  //发送数据   &n ...…

查看全部问答>

驱动中怎么让一个程序每隔一段时间执行一次??

比如每隔一分钟执行一次,我是CreateThread,然后再线程中sleep,可感觉有些问题。 应该怎么做,有定时器之类的吗?…

查看全部问答>

哪里有windows CE 5.0(platform builder 5.0)??

google了好久,都没找到windows CE 5.0下载。 不知道各位谁有这个东西,或者知道哪里有这个下载。 如果谁有的可以传给我就更好了。 请加我 QQ:46231244 谢谢…

查看全部问答>

求助!!!定时器同步配置问题-一个上升沿信号触发定时器TIM2,同时根据上升沿信号启

最近在做一个RLC(电阻、电感、电容)测量仪,测量插座只有一个,因此需要利用程序区分三种不同的器件; 区分方法是利用通过三种器件后的波形超前滞后关系判别,将正弦信号转化为矩形波后输入定时器通道1。与此同时将没有经过原器件的正弦波也转化为 ...…

查看全部问答>

IAR_EW430使用入门

IAR_EW430的使用贴,是我学习时找到的资料…

查看全部问答>