读取W25Q64的设备ID时输出0xff

发现的问题

读取W25Q64的设备ID时输出0xff

找到的不同解决方法

  • 检查MISO和MOSI是否接对。MISO->DO,MOSI->DI
  • 检查程序在初始化spi时是否将SS拉高、SCK拉低
  • 如果是硬件spi那么检查SPI的初始化函数中,时钟极性SPI_CPOL误选为SPI_CPOL_Low,改为和例程相同的SPI_CPOL_High。
  • 如果使用PB3/4引脚作为软件spi引脚时,因为使用了PB3、PB4这两个引脚上电复位默认是作为调试端口使用的。所以得先关闭JTAG功能才行
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关闭pb3、4,pa15的JTAG功能,打开sw调试功能
    初始化时,PB3、PB4做普通io需打开复用功能
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  • 最后是我自己最蠢的问题,原来连接连接的杜邦线是断的,导致数据不正常
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在STM32微控制器上读取W25Q64芯片的ID,你可以遵循以下步骤: 1. 配置SPI接口:首先,确保你STM32微控制器上的SPI接口已经正确配置。你需要配置SPI引脚、钟和模式等参数,使其与W25Q64芯片兼容。 2. 初始化SPI:在代码中初始化SPI接口,设置SPI的参数,如数据传输速率、数据位顺序和钟极性等。 3. 发送读取ID的指令:使用SPI接口向W25Q64芯片发送读取ID的指令。W25Q64芯片的读取ID指令是0x90,需要将该指令通过SPI接口发送给芯片。 4. 读取ID数据:通过SPI接口从W25Q64芯片读取ID数据。W25Q64芯片的ID数据包括制造商ID设备ID,共16位。你可以通过SPI接口发送空字节(0x00)来接收芯片返回的ID数据。 下面是一个简单的示例代码,展示了如何在STM32上读取W25Q64芯片的ID: ```c #include "stm32f4xx.h" #include "spi.h" #define W25Q64_CMD_READ_ID 0x90 uint16_t readW25Q64ID(void) { uint8_t txData[4] = {W25Q64_CMD_READ_ID, 0x00, 0x00, 0x00}; uint8_t rxData[4] = {0}; // 发送读取ID的指令 SPI_TransmitReceive(txData, rxData, 4); // 返回ID数据 return (rxData[2] << 8) | rxData[3]; } int main(void) { // 初始化SPI接口和其他相关设置 // 读取W25Q64芯片的ID uint16_t chipID = readW25Q64ID(); // 处理读取到的ID数据 while (1) { // 主循环 } } ``` 请注意,这只是一个简单示例代码,具体的实现可能因不同的STM32型号和开发环境而有所不同。你需要根据自己的情况进行适当的修改和调整。此外,确保在使用SPI接口,你已正确配置芯片选择引脚(例如片选引脚)和SPI接口的钟等参数。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值