打印
[STM32F0]

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

[复制链接]
790|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 有的时候会导致数据异步问题, 编程的时候需要特别留意

使用特权

评论回复
5
yiyigirl2014| | 2015-12-25 22:57 | 只看该作者
增加的那一句是什么意思,太复杂了,没看明白

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

136

主题

11708

帖子

75

粉丝