997|5

1万

帖子

15

资源

版主

【ESK32-360测评】六、喂!喂!你好!你好! [复制链接]

本帖最后由 ddllxxrr 于 2020-8-20 10:45 编辑

我不隐瞒地说我从来就没有跑过I2S的程序。一个是因为工作接触不到这个,再一个因为以前开发板根本就没有这个例程。 

但是和泰的这款板子就不一样了。板子上有一个语音芯片,还有一个I2S的例程。等了这么久机会终于来了。

首先,分析一下原理图:

HTPPP.jpg 可见,这个原理是可以音频和语音输入的。而S1为两者的切换。再有板子上有一处为显示屏与I2S的跳线。

再分析一下例程:

int main(void)
{
  NVIC_Configuration();
  CKCU_Configuration();
  GPIO_Configuration();
  RETARGET_Configuration();
  I2CM_Init();
  WM8978_Init();

  printf("\r\n\r\nHT32 I2S and WM8978 Loopback ...\r\n");

  /* Config I2S                                                                                             */
  I2S_Configuration();

  /* I2S TX                                                                                                 */
  /* I2S RX                                                                                                 */
  PDMA_Configuration();

  while (1)
  {
    int i;

    while (IsRxTrigLevelReach == FALSE);
    IsRxTrigLevelReach = FALSE;
    for (i = 0; i < HALF_BUF_SIZE; i++)
    {
      u32 tmp = RxBuf[AltBuf];
      TxBuf[AltBuf] = (tmp & 0xFFFF0000) | (tmp >> 16);
    }
  }
}

可见只是把收到的内容,输出,而这都只是不经过CPU处理的:


void PDMA_Configuration(void)
{
  PDMACH_InitTypeDef PDMACH_InitStructure;

  /* I2S TX                                                                                                 */
  PDMACH_InitStructure.PDMACH_SrcAddr = (u32)&TxBuf[0][0];
  PDMACH_InitStructure.PDMACH_DstAddr = (u32)&HT_I2S->TXDR;
  PDMACH_InitStructure.PDMACH_AdrMod = (SRC_ADR_LIN_INC | DST_ADR_FIX | AUTO_RELOAD);
  PDMACH_InitStructure.PDMACH_BlkCnt = BUF_SIZE/5;
  PDMACH_InitStructure.PDMACH_BlkLen = 5;
  PDMACH_InitStructure.PDMACH_DataSize = WIDTH_32BIT;
  PDMACH_InitStructure.PDMACH_Priority = M_PRIO;
  PDMA_Config(PDMA_CH3, &PDMACH_InitStructure);
  PDMA_EnaCmd(PDMA_CH3, ENABLE);

  I2S_FIFOTrigLevelConfig(I2S_TX_FIFO, 3);  // Tx FIFO data '<' or '=' 3
  I2S_IntConfig(I2S_INT_TXFIFO_UDF, ENABLE);
  I2S_PDMACmd(I2S_PDMAREQ_TX, ENABLE);


  /* I2S RX                                                                                                 */
  PDMACH_InitStructure.PDMACH_SrcAddr = (u32)&HT_I2S->RXDR;
  PDMACH_InitStructure.PDMACH_DstAddr = (u32)&RxBuf[0][0];
  PDMACH_InitStructure.PDMACH_AdrMod = (SRC_ADR_FIX | DST_ADR_LIN_INC | AUTO_RELOAD);
  PDMACH_InitStructure.PDMACH_BlkCnt = BUF_SIZE/5;
  PDMACH_InitStructure.PDMACH_BlkLen = 5;
  PDMACH_InitStructure.PDMACH_DataSize = WIDTH_32BIT;
  PDMACH_InitStructure.PDMACH_Priority = H_PRIO;
  PDMA_Config(PDMA_CH2, &PDMACH_InitStructure);
  PDMA_IntConfig(PDMA_CH2, (PDMA_INT_GE | PDMA_INT_TC | PDMA_INT_HT), ENABLE);
  PDMA_EnaCmd(PDMA_CH2, ENABLE);

  I2S_FIFOTrigLevelConfig(I2S_RX_FIFO, 5);  // Rx FIFO data '>' or '=' 5
  I2S_PDMACmd(I2S_PDMAREQ_RX, ENABLE);
  I2S_IntConfig(I2S_INT_RXFIFO_OVF, ENABLE);

  I2S_Cmd(ENABLE);
}

那么,好办了,我就用MIC做为输入以耳机做为输出问一下你好吧?

QQ图片20200819193820.jpg

 

有的看官会问怎么知道是程序的输出的,也许模块就是这样吧?,这很简单就可以证明,我下个不是I2S的程序,从耳机里听不到我手摸迷头的声音。

以下是我用手机,靠近耳机录的音。内容是:“喂!喂!你好你好”,不愿听叫唤的可以绕过。

8月19日 下午7点12分.mp3 (101.27 KB, 下载次数: 2)

个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复

327

帖子

0

资源

一粒金砂(中级)

I2S跟显示屏所用的SPI引脚复用了?

点评

在板子上有上跳线,我觉得是  详情 回复 发表于 2020-8-20 10:40

回复

1万

帖子

15

资源

版主

宋元浩 发表于 2020-8-19 23:08 I2S跟显示屏所用的SPI引脚复用了?

在板子上有上跳线,我觉得是

点评

这就有点不香了,这个demo板的MCU是48pin的嘛  详情 回复 发表于 2020-8-20 13:29
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复

327

帖子

0

资源

一粒金砂(中级)

ddllxxrr 发表于 2020-8-20 10:40 在板子上有上跳线,我觉得是

这就有点不香了,这个demo板的MCU是48pin的嘛


回复

1万

帖子

133

资源

管理员

个人签名

玩板看这里:

http://bbs.eeworld.com.cn/elecplay.html

EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!


回复

2673

帖子

1

资源

五彩晶圆(初级)

看起来不是很麻烦,我工作中也用不到音频

个人签名人已离开,无事别找,找也找不到。

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

最新文章 更多>>
    关闭
    站长推荐上一条 1/6 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表