[STM32F0] 最近在030用SPI访问SPI-FLASH遇到困难

[复制链接]
998|4
 楼主| 戈卫东 发表于 2015-12-23 07:27 | 显示全部楼层 |阅读模式
程序是以前在F103和F407上面验证过的,到了F030不行了。
 楼主| 戈卫东 发表于 2015-12-25 19:38 | 显示全部楼层
已解决。
unsigned char w25q64spi_write(unsigned char d)
{
    SPI1->DR;
    SPI1->DR = d;
    while (0 == (SPI1->SR & MASK_RXNE)) {}
    return SPI1->DR;
}
这个函数改成这样:
unsigned char w25q64spi_write(unsigned char d)
{
    SPI1->DR;
    *((unsigned char *)&SPI1->DR) = d;
    while (0 == (SPI1->SR & MASK_RXNE)) {}
    return SPI1->DR;
}
就可以了。
说明:ST的新MCU的SPI带有FIFO。当传输位数小于等于8时,如果对DR进行16BIT写,它会把这个16BIT变成多个传输放到FIFO中。
 楼主| 戈卫东 发表于 2015-12-25 19:39 | 显示全部楼层
来人那。。。。。。散分了。。。。。
airwill 发表于 2015-12-25 19:45 | 显示全部楼层
是的,  STM32 的 spi 的 FIFO 有的时候会导致数据异步问题, 编程的时候需要特别留意
yiyigirl2014 发表于 2015-12-25 22:57 | 显示全部楼层
增加的那一句是什么意思,太复杂了,没看明白
您需要登录后才可以回帖 登录 | 注册

本版积分规则

136

主题

11708

帖子

75

粉丝
快速回复 在线客服 返回列表 返回顶部