OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8637|回复: 6

F446RET6 HAL库I2S DMA接收到的数据全为0

[复制链接]

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2021-6-15
在线时间
19 小时
发表于 2022-9-3 11:25:59 | 显示全部楼层 |阅读模式
stm32F446RET6使用HAL库,配置I2S使能DMA接受数据,I2S功能正常,DMA接收到的数据全为0,且接收完成回调函数和错误回调函数同时执行DMA2时钟,SPI1时钟,GPIO时钟都已经使能


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2021-6-15
在线时间
19 小时
 楼主| 发表于 2022-9-3 11:28:13 | 显示全部楼层
void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s)
{
        if(hi2s == &hi2s1)
        {
                printf("数据接收完成\r\n");
                HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
                //HAL_UART_Transmit(&huart1, rxbuf, sizeof(rxbuf), 0xffff);
        }
}

void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s)
{
        if(hi2s == &hi2s1)
        {
                printf("数据接收错误\r\n");
        }
}
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2021-6-15
在线时间
19 小时
 楼主| 发表于 2022-9-3 11:29:21 | 显示全部楼层
while (1)
  {
          HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
          HAL_I2S_Receive_DMA(&hi2s1, rxbuf, sizeof(rxbuf));
          HAL_Delay(300);

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2021-6-15
在线时间
19 小时
 楼主| 发表于 2022-9-3 11:39:36 | 显示全部楼层
hdma_spi1_rx.Instance = DMA2_Stream0;
    hdma_spi1_rx.Init.Channel = DMA_CHANNEL_3;
    hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
    hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE;
    hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
    hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
    hdma_spi1_rx.Init.Mode = DMA_NORMAL;
    hdma_spi1_rx.Init.Priority = DMA_PRIORITY_LOW;
    hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2021-6-15
在线时间
19 小时
 楼主| 发表于 2022-9-8 09:50:59 | 显示全部楼层
已解决
回复 支持 反对

使用道具 举报

1

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
168
金钱
168
注册时间
2022-11-1
在线时间
25 小时
发表于 2022-11-22 19:32:52 | 显示全部楼层
楼主,446的USART收发配置有例程吗?发一下呢,多谢
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2021-6-15
在线时间
19 小时
 楼主| 发表于 2022-11-26 15:29:55 | 显示全部楼层
adsionshm 发表于 2022-11-22 19:32
楼主,446的USART收发配置有例程吗?发一下呢,多谢

#include <stdio.h>

int fputc(int ch, FILE *f)
{
uint8_t temp[1] = {ch};
HAL_UART_Transmit(&huart1, temp, 1, 0xffff);
return ch;
}

串口使用cubemx配置好之后,再.c文件中添加以上代码,就可以使用printf
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 23:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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