OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4749|回复: 4

初学SPI FLASH的几个问题

[复制链接]

17

主题

470

帖子

1

精华

高级会员

Rank: 4

积分
718
金钱
718
注册时间
2013-11-23
在线时间
0 小时
发表于 2013-12-7 14:41:04 | 显示全部楼层 |阅读模式
1.例程里要用的SPI2,但是只有一个从机选择信号SPI2_NSS是怎么片选多个从机的?我看原理图的SPI FLSAH接在这个信号上,其它几个从机比如无线模块接在STM32的其它IO上,为什么能实现SPI2的从机选择?
2.库函数版里有个函数u8 SPI2_ReadWriteByte(u8 TxData)为什么这里入口参数是8位,函数里调用的SPI收发函数却是16位的?
void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data)
uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx)

u8 SPI2_ReadWriteByte(u8 TxData)
{
u8 retry=0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
{
retry++;
if(retry>200)return 0;
}  
SPI_I2S_SendData(SPI2, TxData); //通过外设SPIx发送一个数据
retry=0;

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET) //检查指定的SPI标志位设置与否:接受缓存非空标志位
{
retry++;
if(retry>200)return 0;
}      
return SPI_I2S_ReceiveData(SPI2); //返回通过SPIx最近接收的数据    
}

3.SPI写数据是扇区写,这里的计算怎么理解?

        secpos=WriteAddr/4096;//扇区地址 0~511 for w25x16
secoff=WriteAddr%4096;//在扇区内的偏移
secremain=4096-secoff;//扇区剩余空间大小 

问题有点多。。麻烦了,谢谢


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

头像被屏蔽

38

主题

382

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2012-12-5
在线时间
19 小时
发表于 2013-12-7 16:56:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

38

主题

382

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2012-12-5
在线时间
19 小时
发表于 2013-12-7 16:59:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

17

主题

470

帖子

1

精华

高级会员

Rank: 4

积分
718
金钱
718
注册时间
2013-11-23
在线时间
0 小时
 楼主| 发表于 2013-12-7 17:17:06 | 显示全部楼层
了解了,谢谢!
回复 支持 反对

使用道具 举报

17

主题

470

帖子

1

精华

高级会员

Rank: 4

积分
718
金钱
718
注册时间
2013-11-23
在线时间
0 小时
 楼主| 发表于 2013-12-7 17:22:20 | 显示全部楼层
第二个问题,反过来不行吗?如果是调用8位的,先读写高八位,再低八位
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 16:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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