STM32之CHIP_ID的获得

https://blog.csdn.net/heybeaman/article/details/80373435


#define CHIP_ID_START 0x1FFF7590

void Get_ChipID(unsigned char *p){
    unsigned char i;
    unsigned char *pIDStart=(unsigned char *)(CHIP_ID_START);   
    
    for(i=0;i!=12;i++)
    {
        *p++=*pIDStart++;
    }
}

用的时候

void GetDataBaseMsg( BleAppMsgType *pMsg , uint8_t *pRtData)
{
    uint8_t *AdminMsg, *ChipId ,i=0 ,index =0,UserIndex=0 ;
    

    config.read(CFG_SYS_CHIP_ID , (void **)&ChipId); 
    
    Get_ChipID(ChipId); 
    
    

认真看上面代码!config.read(CFG_SYS_CHIP_ID , (void **)&ChipId); 其实相当于malloc!!因为直接调用 Get_ChipID(ChipId)的话 *ChipId还是空空如也 会死机!!!!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在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接口的时钟等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值