大家好,我最近用STM32F030F4的SPI驱动一块3.5寸LCD,是三线的,LCD要求时序如下 于是我配置SPI为9bit,主频28兆,4分频为7兆,配置如下 使用的HAL_SPI_Transmit发送函数,发现执行到数据写入DR时就进硬件错误中断了 stm32f03xx_hal_spi.c中,,执行到下面就硬件错误了. 使用IO模拟是没有问题的,整的我一时摸不着头脑了,网上找了一圈也没有具体方法,请教下大家怎么搞. |
如需获得 STM32F030F4 等器件的更多信息,请点击链接或 点击此处 联系在线客服!
我也一直都是用模拟SPI驱动显示屏,硬件SPI有点摸不着头脑。
发送函数如何调用的?可能是因为发送的数据内容和实际长度不符合,导致内存溢出后进入错误中断。
如果说发生硬错的话,极有可能跟你的用户代码密切相关,请注意数组边界、数据宽度对齐方面的问题。
发送数据定位为9位,看看发送缓冲区定义等是否造成了最终内存溢出。 测试了一下,如果都是定义为8位的,可以发送出数据,会造成hardfault。
发送数据定位为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);就会出错
如果说发生硬错的话,极有可能跟你的用户代码密切相关,请注意数组边界、数据宽度对齐方面的问题。 ...
东搞西搞,没硬件错误时候调试看DR寄存器数据也是不对劲的
(uint8_t *)(CMD&0xeff),你这个是取(CMD&0xeff)的地址,这是个非法的地址。我不知道你这里想怎么用,如果只是想修改CMD的值,要单独写。
OK终于搞定了, 具体配置如下: 不过SPI刷屏速度很蛋疼,还是尽量并口把! 代码: