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

查看: 11654|回复: 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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版