完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
各位大神:
我想读取W24X40的ID信息,然后在串口显示,但是串口显示全是零,请指教一下我程序哪里出错啦? 读三个ID的代码是下面的 u8 SPI_FLASH_SendByte(u8 BYTE) { while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET); SPI_I2S_SendData(SPI1, BYTE); while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); return SPI_I2S_ReceiveData(SPI1); } u32 SPI_FLASH_ReadDeviceID(void) { u8 tmp0; GPIO_ResetBits(GPIOA, GPIO_Pin_4); SPI_FLASH_SendByte(0xAB); SPI_FLASH_SendByte(0xFF); SPI_FLASH_SendByte(0xFF); SPI_FLASH_SendByte(0xFF); tmp0 = SPI_FLASH_SendByte(0xFF); GPIO_SetBits(GPIOA, GPIO_Pin_4); return tmp0; } u32 SPI_FLASH_ReadID(void) { u32 tmp1 = 0,tmp2 = 0,tmp3 = 0,tmp4 = 0; GPIO_ResetBits(GPIOA, GPIO_Pin_4); SPI_FLASH_SendByte(0x9F); tmp1 = SPI_FLASH_SendByte(0xFF); tmp1&=0x0FF; tmp2 = SPI_FLASH_SendByte(0xFF); tmp2&=0x0FF; tmp3 = SPI_FLASH_SendByte(0xFF); tmp3&=0x0FF; GPIO_SetBits(GPIOA, GPIO_Pin_4); tmp4 = (tmp1<<16)|(tmp2<<8)|tmp3; return tmp4; } u16 SPI_FLASH_ReadID1(void) { u16 tmp = 0, tmp1 = 0, tmp2 = 0; GPIO_ResetBits(GPIOA, GPIO_Pin_4); SPI_FLASH_SendByte(0x90); SPI_FLASH_SendByte(0x00); SPI_FLASH_SendByte(0x00); SPI_FLASH_SendByte(0x00); tmp1 = SPI_FLASH_SendByte(0xff); tmp2 = SPI_FLASH_SendByte(0xff); GPIO_SetBits(GPIOA, GPIO_Pin_4); tmp = (tmp1<<8)|tmp2; return tmp; } 下面是输出到串口部分的代码: while(1) { tp1 = SPI_FLASH_ReadDeviceID(); tp2 = SPI_FLASH_ReadID(); tp3 = SPI_FLASH_ReadID1(); printf("rnID已经读出来!rn"); GPIO_SetBits(GPIOA, GPIO_Pin_2); GPIO_ResetBits(GPIOA, GPIO_Pin_1); printf("rn ID1=:0x%4x rn", tp1); printf("rn ID2=:0x%4x rn", tp2); printf("rn ID3=:0x%2x rn", tp3); //while(1); ZQ_Delay(1000); GPIO_ResetBits(GPIOA, GPIO_Pin_2); GPIO_SetBits(GPIOA, GPIO_Pin_1); tp1 = SPI_FLASH_ReadDeviceID(); tp2 = SPI_FLASH_ReadID(); tp3 = SPI_FLASH_ReadID1(); printf("rnID 又读出来rn"); printf("rn ID1=:0x%4x rn", tp1); printf("rn ID2=:0x%4x rn", tp2); printf("rn ID3=:0x%2x rn", tp3); ZQ_Delay(1000); } 在线求指教啊? 串口的输出结果是这样: usart1 开启成功 SPI 开启成功 ID已经读出来! ID1=:0x 0 ID2=:0x 0 ID3=:0x 0 ID 又读出来 ID1=:0x 0 ID2=:0x 0 ID3=:0x 0 ID已经读出来! ID1=:0x 0 ID2=:0x3ffff ID3=:0x 0 ID 又读出来 ID1=:0x 0 ID2=:0x 0 ID3=:0x 0 ID已经读出来! ID1=:0x 0 ID2=:0x 0 ID3=:0x 0 ID 又读出来 ID1=:0x 0 ID2=:0x 0 ID3=:0x 0 ID已经读出来! ID1=:0x 0 ID2=:0x 0 ID3=:0x 0 有一次读出来的值还不一样! |
|
相关推荐
2个回答
|
|
GPIO_SetBits(GPIOA, GPIO_Pin_2);
GPIO_ResetBits(GPIOA, GPIO_Pin_1); 还有我是想让我这两个引脚出来的灯交替亮的(每读一次ID),现在我PIN1的等常亮,灯2是一灭一亮 |
|
|
|
我自己找到问题所在了,
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
飞凌嵌入式-ELFBOARD 硬件知识分享-ELF 2电源电路讲解
800 浏览 0 评论
1569 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程介绍之烧写所需镜像
1394 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写方法
844 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
1335 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 17:01 , Processed in 0.646745 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号