你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 11777|回复: 12

STM32F0 的SPI可能有Bug【悬赏问答】

[复制链接]

3

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-7-8 16:54:36 | 显示全部楼层 |阅读模式
在STM32F103上跑的好好的SPI Driver,弄到STM32F0 discovery上试试,发现不工作。

配置:
----------------------------------------------------------------------------
  SPI_StructInit( &SPI_InitStructure );
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_Init(SPI1, &SPI_InitStructure);

收发函数:
---------------------------------------------------------------
uint8_t SPI_RW(uint8_t uchar)
{
  /* Loop while DR register in not emplty */
  while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);

  /* Send byte through the SPI1 peripheral */
  SPI_SendData8(SPI1, uchar);
   
  /* Wait to receive a byte */
  while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);

  /* Return the byte read from the SPI bus */
  return SPI_ReceiveData8(SPI1);
}

问题定位:
---------------------------------------------
1. 用逻辑分析仪抓输出,发现SCK和MOSI输出正常, SCK输出8个时钟脉冲

2. debug跟踪,发现程序死在 while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); 这一句上,实在是没道理啊。

3. 前面再加上一条 SPI_SendData8(SPI1, uchar);  连续发送两个8bit数据, 发现程序能跑下去了,就是说SPI_I2S_FLAG_RXNE终于有效了!!

但是这样的hack实在是不能用啊。 我猜是个硬件bug,请问哪位能帮忙验证一下??

工程文件和代码在这里

F0 WMCU.zip

下载

50.52 KB, 下载次数: 90, 下载积分: ST金币 -1

回复

使用道具 举报

2

主题

240

回帖

0

蝴蝶豆

中级会员

最后登录
2020-8-11
发表于 2012-7-13 12:10:50 | 显示全部楼层

RE:STM32F0 的SPI可能有Bug【悬赏问答】

我手里没有F0的板子,但是在F1和F4中我没有发现这个BUG...
回复 支持 反对

使用道具 举报

7

主题

157

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-7-13 13:02:12 | 显示全部楼层

RE:STM32F0 的SPI可能有Bug【悬赏问答】

官方的固件库,在st不同系列的单片机上移植时要修改一定的配置,最重要的是单片机要选对
回复 支持 反对

使用道具 举报

0

主题

16

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-7-13 15:31:05 | 显示全部楼层

RE:STM32F0 的SPI可能有Bug【悬赏问答】

芯片之间移植是需要修改寄存器的。甚至有时候硬件连接动了都要改程序,所以不推荐拿来就烧,得看一看啊。
回复 支持 反对

使用道具 举报

25

主题

446

回帖

0

蝴蝶豆

中级会员

最后登录
2019-12-10
发表于 2012-7-13 15:45:15 | 显示全部楼层

RE:STM32F0 的SPI可能有Bug【悬赏问答】

我跑了手上的F0的SPI,没有发现问题啊。LZ检查自己的代码吧
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-7-13 15:50:22 | 显示全部楼层

RE:STM32F0 的SPI可能有Bug【悬赏问答】

更改驱动库,F10X的是通用的,但是和其他的不通用.
回复 支持 反对

使用道具 举报

0

主题

5

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-1-23 16:26:03 | 显示全部楼层

RE:STM32F0 的SPI可能有Bug【悬赏问答】

IO 配置看是否正确, 然后加上
SPI_RxFIFOThresholdConfig(SPI1, SPI_RxFIFOThreshold_QF);
回复 支持 反对

使用道具 举报

1

主题

27

回帖

0

蝴蝶豆

中级会员

最后登录
2017-12-15
发表于 2014-6-12 10:19:11 | 显示全部楼层

回复:STM32F0 的SPI可能有Bug【悬赏问答】

 我遇到同样的问题,求解决方法。
回复 支持 反对

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
2018-9-27
发表于 2014-9-3 08:19:08 | 显示全部楼层

回复:STM32F0 的SPI可能有Bug【悬赏问答】

我也遇到同样的问题,愁刹人了。
回复 支持 反对

使用道具 举报

0

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-9-3 15:36:47 | 显示全部楼层

回复:STM32F0 的SPI可能有Bug【悬赏问答】

回复第 9 楼 于2014-09-03 08:19:08发表:
检查SPI接收触发中断的大小设置成多少了? 
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版