请选择 进入手机版 | 继续访问电脑版

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

STM32F030F4的SPI问题

[复制链接]
是老王啊 提问时间:2022-5-5 00:13 / 未解决

大家好,我最近用STM32F030F4的SPI驱动一块3.5寸LCD,是三线的,LCD要求时序如下

SPI时序.PNG

于是我配置SPI为9bit,主频28兆,4分频为7兆,配置如下

SPI.PNG

使用的HAL_SPI_Transmit发送函数,发现执行到数据写入DR时就进硬件错误中断了

stm32f03xx_hal_spi.c中,,执行到下面就硬件错误了.

err.PNG

使用IO模拟是没有问题的,整的我一时摸不着头脑了,网上找了一圈也没有具体方法,请教下大家怎么搞.

收藏 评论8 发布时间:2022-5-5 00:13

举报

8个回答
老牛洋车 回答时间:2022-5-5 08:06:15

我也一直都是用模拟SPI驱动显示屏,硬件SPI有点摸不着头脑。

废鱼 回答时间:2022-5-5 08:25:40

发送函数如何调用的?可能是因为发送的数据内容和实际长度不符合,导致内存溢出后进入错误中断。

xmshao 回答时间:2022-5-5 11:38:56
如果说发生硬错的话,极有可能跟你的用户代码密切相关,请注意数组边界、数据宽度对齐方面的问题。
butterflyspring 回答时间:2022-5-5 15:42:24

发送数据定位为9位,看看发送缓冲区定义等是否造成了最终内存溢出。 测试了一下,如果都是定义为8位的,可以发送出数据,会造成hardfault。

是老王啊 回答时间:2022-5-5 17:40:14

butterflyspring 发表于 2022-5-5 15:42
发送数据定位为9位,看看发送缓冲区定义等是否造成了最终内存溢出。 测试了一下,如果都是定义为8位的 ...

[md]我发送数据定的unsigned short,按说应该没问题的啊HAL_SPI_Transmit(&hspi1,(uint8_t *)CMD,1,1000);这样传过来的CMD为0x011时不会死在那,但是看DR还是0x0000,

改CMD为0x11时,HAL_SPI_Transmit(&hspi1,(uint8_t *)(CMD&0xeff),1,1000);就会出错

是老王啊 回答时间:2022-5-5 23:28:40

xmshao 发表于 2022-5-5 11:38
如果说发生硬错的话,极有可能跟你的用户代码密切相关,请注意数组边界、数据宽度对齐方面的问题。 ...

东搞西搞,没硬件错误时候调试看DR寄存器数据也是不对劲的

废鱼 回答时间:2022-5-6 08:28:19

(uint8_t *)(CMD&0xeff),你这个是取(CMD&0xeff)的地址,这是个非法的地址。我不知道你这里想怎么用,如果只是想修改CMD的值,要单独写。

是老王啊 回答时间:2022-5-6 18:30:39

OK终于搞定了,

具体配置如下:

image.png

image.png

微信图片_20220506182632.jpg

不过SPI刷屏速度很蛋疼,还是尽量并口把!

代码:

F030F4.zip

image.png

所属标签

相似问题

官网相关资源

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