你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
feiante 发表于 2015-1-30 11:15 一般不应该是0,如果读不到,应该是FF
为它停留 发表于 2015-1-31 15:35 我的ID读正确了,还是时候问题,我的是F407,用cube不能进行擦除,你看看我的代码哪有有问题? void SPI_FL ...
意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器
SPI的引脚配置可以这样设置吗? /**SPI1 GPIO Configuration
PB3 ------> SPI1_SCK
PB4 ------> SPI1_MISO
PB5 ------> SPI1_MOSI
*/
GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
void SPI_FLASH_SectorErase(uint32_t SectorAddr)
{
SPI_FLASH_WriteEnable();
SPI_FLASH_CS_LOW();
SPI_FLASH_SendByte(W25X_SectorErase);
SPI_FLASH_SendByte((SectorAddr & 0xFF0000) >> 16);
SPI_FLASH_SendByte((SectorAddr & 0xFF00) >> 8);
SPI_FLASH_SendByte(SectorAddr & 0xFF);
SPI_FLASH_CS_HIGH();
SPI_FLASH_WaitForWriteEnd();
}
void SPI_FLASH_WriteEnable(void)
{
SPI_FLASH_CS_LOW();
HAL_SPI_Transmit(&hspi1, &W25X_WriteEnable, 1, 100);
SPI_FLASH_CS_HIGH();
}
uint8_t SPI_FLASH_SendByte(uint8_t byte)
{
uint8_t temp;
uint8_t temp1[1];
HAL_SPI_TransmitReceive(&hspi1, &byte, &temp1[0], 1,100);
temp=temp1[0];
return temp;
}
void SPI_FLASH_WaitForWriteEnd(void)
{
uint8_t FLASH_Status=0;
uint8_t temp1[1];
SPI_FLASH_CS_LOW();
HAL_SPI_Transmit(&hspi1, &W25X_ReadStatusReg, 1, 100);
do
{
HAL_SPI_TransmitReceive(&hspi1, &Dummy_Byte, &temp1[0], 1,100);
FLASH_Status = temp1[0];
}
while ((FLASH_Status & WIP_Flag) == SET);
SPI_FLASH_CS_HIGH();
}
这是用调用到的函数
按帖子的方法读到的ID号都为0
请各位大大指点一下, 谢谢
采用STM32F030C8芯片
CS为PB6,SCK为PB3,MISO为PB4,MOSI为PB5
程序代码如下:
我的也是SPI1主、SPI4从,发送出去没问题,spi4中断接收,总是收不到数,求解,怎么觉得没有标准库好用啊?