你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
大家好,我最近用STM32F030F4的SPI驱动一块3.5寸LCD,是三线的,LCD要求时序如下
于是我配置SPI为9bit,主频28兆,4分频为7兆,配置如下
使用的HAL_SPI_Transmit发送函数,发现执行到数据写入DR时就进硬件错误中断了
stm32f03xx_hal_spi.c中,,执行到下面就硬件错误了.
使用IO模拟是没有问题的,整的我一时摸不着头脑了,网上找了一圈也没有具体方法,请教下大家怎么搞.
举报
我也一直都是用模拟SPI驱动显示屏,硬件SPI有点摸不着头脑。
发送函数如何调用的?可能是因为发送的数据内容和实际长度不符合,导致内存溢出后进入错误中断。
发送数据定位为9位,看看发送缓冲区定义等是否造成了最终内存溢出。 测试了一下,如果都是定义为8位的,可以发送出数据,会造成hardfault。
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);就会出错
xmshao 发表于 2022-5-5 11:38 如果说发生硬错的话,极有可能跟你的用户代码密切相关,请注意数组边界、数据宽度对齐方面的问题。 ...
东搞西搞,没硬件错误时候调试看DR寄存器数据也是不对劲的
(uint8_t *)(CMD&0xeff),你这个是取(CMD&0xeff)的地址,这是个非法的地址。我不知道你这里想怎么用,如果只是想修改CMD的值,要单独写。
OK终于搞定了,
具体配置如下:
不过SPI刷屏速度很蛋疼,还是尽量并口把!
代码:
STM32F030内部晶振怎么设置,内部晶振是延时函数怎么设置
分享STM32F030K6程序运行异常的解决方法
STM32F030正常上电不运行
DMA 读取GPIO的状态
stm32的同一个定时器,不同的通道,可以不同时的输出pwm波形吗
基于STM32的锂动力电池检测装置的设计
STM32的低功耗模式
STM32的上电启动过程
STM32中如何实现数据加密
STM32的I2S外设
我也一直都是用模拟SPI驱动显示屏,硬件SPI有点摸不着头脑。
发送函数如何调用的?可能是因为发送的数据内容和实际长度不符合,导致内存溢出后进入错误中断。
发送数据定位为9位,看看发送缓冲区定义等是否造成了最终内存溢出。 测试了一下,如果都是定义为8位的,可以发送出数据,会造成hardfault。
[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);就会出错
东搞西搞,没硬件错误时候调试看DR寄存器数据也是不对劲的
(uint8_t *)(CMD&0xeff),你这个是取(CMD&0xeff)的地址,这是个非法的地址。我不知道你这里想怎么用,如果只是想修改CMD的值,要单独写。
OK终于搞定了,
具体配置如下:
不过SPI刷屏速度很蛋疼,还是尽量并口把!
代码: