硬汉嵌入式论坛

 找回密码
 立即注册
查看: 355|回复: 3
收起左侧

[SPI/QSPI] spi6+bdma传输异常

[复制链接]

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2025-8-16 12:59:39 | 显示全部楼层 |阅读模式
本帖最后由 T0n0T 于 2025-8-16 16:58 编辑

在使用spi6对st7789刷屏的时候遇到的一个问题,是不使用dma时正常刷屏,使用dma时spi没有输出数据,无法正常刷屏,大概的使用流程包括:
1. 通过cubemx配置主频550Mhz, APBCLKspi6时钟源为100Mhz,并2分频得到50Mhz的baudrate,使用生成的代码进行初始化

2. 配置buffer位置在RAM_D3,在map中可以确认到位置

3. 工程中st7789一些最初的命令设置使用了普通的SPI传输,初始化的最后一步给dma的buffer填颜色,然后再使用dma传输,这里startup直接跳到main,st7789前面一堆command省略,贴了最后写数据时卡住的地方,没有while不卡住也是没有数据发出来的
   

实在看不出来有什么地方需要修改了,对着大家的操作搞也没搞出来,遂来找大佬帮助!
下载 (1).png
下载 (2).png
下载 (3).png
下载 (4).png
下载 (5).png
下载 (6).png
下载 (7).png
下载 (8).png
下载 (9).png
下载 (10).png
下载 (11).png
下载.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
118312
QQ
发表于 2025-8-18 09:03:53 | 显示全部楼层
1、D3域有个单独的时钟,使能了没
2、ST7789配置阶段使用查询模式,启动起来,刷新的时候使用BDMA
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2025-8-18 17:40:10 | 显示全部楼层
感谢硬汉回复. 目前已经能跑起来了,是初始化顺序的问题;
1. 因为是cubemx生成的时钟配置, D3时钟是在这段是使能了的
[C] 纯文本查看 复制代码
  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
                              |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
  RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK)
  {
    Error_Handler();
  }


2. 目前确实是如你说的, 只在数据发送时使用dma
3. 但是先前我直接使用 cubemx 的初始化函数时, 使用的顺序是
[C] 纯文本查看 复制代码
MX_SPI6_Init();
MX_BDMA_Init();


调换顺序后,就可以运行了, 应该是dma时钟未使能的情况下, 对dma的配置的结果
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
118312
QQ
发表于 2025-8-19 08:54:08 | 显示全部楼层
T0n0T 发表于 2025-8-18 17:40
感谢硬汉回复. 目前已经能跑起来了,是初始化顺序的问题;
1. 因为是cubemx生成的时钟配置, D3时钟是在这段 ...

谢谢告知最终原因
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-9-26 11:48 , Processed in 0.044978 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表