久芯网

STM32F030F4的SPI问题

avatar 是老王啊 提问时间: 2023-07-30 15:19:05 / 未解决

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

STM32F030F4的SPI问题 [相关图片]

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

STM32F030F4的SPI问题 [相关图片]

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

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

STM32F030F4的SPI问题 [相关图片]

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


如需获得 STM32F030F4 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

8个回答
  • avatar 老牛洋车
    回答时间: 2023-07-30 15:46:22

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

  • avatar 废鱼
    回答时间: 2023-07-30 16:14:56

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

  • avatar xmshao
    回答时间: 2023-07-30 16:35:59

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

  • avatar butterflyspring
    回答时间: 2023-07-30 17:05:50

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

  • avatar 是老王啊
    回答时间: 2023-07-30 17:38:15
    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);就会出错

  • avatar 是老王啊
    回答时间: 2023-07-30 18:09:01
    xmshao 发表于 2022-5-5 11:38
    如果说发生硬错的话,极有可能跟你的用户代码密切相关,请注意数组边界、数据宽度对齐方面的问题。 ...

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

  • avatar 废鱼
    回答时间: 2023-07-30 18:28:03

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

  • avatar 是老王啊
    回答时间: 2023-07-30 18:53:19

    OK终于搞定了, 具体配置如下: 不过SPI刷屏速度很蛋疼,还是尽量并口把! 代码:

会员中心 微信客服
客服
回到顶部