完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
最近做一个外挂flash,使用的是w23q128,在初始化flash后写入数据和读出数据不对等。读出的数据全为0.下面是初始化和操作函数。
void init_spi(uint32_t ui32SysClock)[ SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);//使能SPI2时钟 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);//使能GPIOD时钟 GPIOPinConfigure(GPIO_PD0_SSI2XDAT1);//SPI2 IO 口定义 GPIOPinConfigure(GPIO_PD1_SSI2XDAT0); GPIOPinConfigure(GPIO_PD2_SSI2FSS); GPIOPinConfigure(GPIO_PD3_SSI2CLK); GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);#if defined(TARGET_IS_TM4C129_RA0) || defined(TARGET_IS_TM4C129_RA1) || defined(TARGET_IS_TM4C129_RA2) SSIConfigSetExpClk(SSI2_BASE, ui32SysClock, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 1000000, 8); //设置SSI 时钟 模式#else SSIConfigSetExpClk(SSI2_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 1000000, 8);#endif SSIEnable(SSI2_BASE);//使能SPI2 while(SSIDataGetNonBlocking(SSI2_BASE, &SpiReviceBuf[0])) //清除缓冲区 [ ]]下面是一些操作函数void Spi_WriteByte(uint8_t TxData)[ while(SSIBusy(SSI2_BASE)) [ ] SSIDataPut(SSI2_BASE,(uint32_t) TxData);]void Spi_Flash_Write_Enable(void)[ Spi_WriteByte(W25X_WriteEnable);]void Spi_Flash_Write_Disable(void)[ Spi_WriteByte(W25X_WriteDisable);]void W25QXX_Erase_Sector(uint32_t Dst_Addr)[ Dst_Addr*=4096; Spi_Flash_Write_Enable(); W25QXX_Wait_Busy(); Spi_WriteByte(W25X_SectorErase); Spi_WriteByte((uint8_t)((Dst_Addr)>>16)); Spi_WriteByte((uint8_t)((Dst_Addr)>>8)); Spi_WriteByte((uint8_t)((Dst_Addr)>>0)); W25QXX_Wait_Busy();]uint8_t SPI_Flash_ReadSR(void)[ uint32_t data; Spi_WriteByte(W25X_ReadStatusReg); Spi_WriteByte(0xFF); while(SSIBusy(SSI2_BASE)) [ ] SSIDataGet(SSI2_BASE,&data); return (uint8_t)data;]void W25QXX_Wait_Busy()[ uint8_t Status; do[ Status = SPI_Flash_ReadSR(); Status &= 0x01; ]while(Status != 0);]void W25QXX_Read(uint8_t *pBuffer,uint32_t ReadAddr,uint16_t NumByteToRead)[ uint16_t i; uint32_t data; Spi_Flash_Write_Enable(); Spi_WriteByte(W25X_ReadData); Spi_WriteByte((uint8_t)((ReadAddr)>>16)); Spi_WriteByte((uint8_t)((ReadAddr)>>8)); Spi_WriteByte((uint8_t)((ReadAddr)>>0)); for(i=0;i mian函数中写入后读出的数据全为0原理图 |
|
相关推荐
6 个讨论
|
|
只有小组成员才能发言,加入小组>>
549 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1513 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1337 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1757浏览 29评论
2781浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1724浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1645浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 07:20 , Processed in 1.174869 second(s), Total 68, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2198