admin
发表于: 2015-4-24 10:11:05 | 显示全部楼层

LPC1752读取FM25L04B的原理与实现

@一板网


1. 简介

本文主要介绍LPC1752通过SPI方式与FM25L04B进行通讯的原理及实现方式。

LPC1752 与 FM25L04B 硬件连接图如图1所示。

连接图.jpg

图 1 SPI硬件连线图


2. 实现函数

2.1 初始化函数

初始化LPC1752的SSP0模块及FM25L04B的相关功能:

— 在PCONP寄存器置位PCSSP0,允许SSP0模块的电源输出;

— 在PCLK_SSP1寄存器中选择PCLK_SEL0,设置SSP0的时钟为CCLK/4;对SSP0的时钟进行分频,设置为CCLK/4/10;

— 对LPC1752的管脚进行设置;

— 设置 SPI 为主模式, FM25L04 工作在 SPI 模式 0。

实现代码如图2所示。

spi_init.jpg

图2  spi_init初始化函数


2.2 读取FM25L04B函数

按照图3 - FM25L04B的读时序所示,首先CS片选置零, 然后向FM25L04B发送READ COMMAND指令,将接收到的数据保存,片选端置位,结束整个读取过程。具体代码实现如图4。

读时序.jpg

图3 FM25L04B的读时序

read.jpg

图4  读函数Read


2.3 FM25L04B写函数

FM25L04B的写时序如图5 所示。每次进行写操作之前都要先发送写使能指令,才能进行写操作,且写操作完成后,写使能自动失效,下一次进行写操作仍然要先发送写使能指令。发送写指令之后,读取寄存器的值判断是否已经写入成功,然后进行下一步操作。具体代码实现如图6。

写时序.jpg

图5 FM25L04B的写时序

write.jpg

图6 写函数代码图


3 测试

测试流程,向0x00写入固定4个数值,然后与读取的值进行比较验证是否正确。

实现代码如图7所示。

main.jpg

图7 测试代码

测试结果如图8所示。

测试结果.jpg

图8读取0x00地址值

经验证LPC1752可以正常与FM25L04B进行通讯。




跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 53 | 回复: 76



手机版|

GMT+8, 2024-3-29 00:42 , Processed in 0.102422 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表