【电赛day1】G题,麦克风IIS协议读取数据

IIS接口详细介绍与嵌入式——实现高效通信的关键 本文将详细介绍IIS接口的工作原理,以及如何在嵌入式系统中使用IIS接口进行数据通信。本文介绍了IIS接口在嵌入式系统中的应用。通过了解IIS接口的工作原理以及使用示例代码,我们可以在嵌入式系统中实现高效的数据通信。使用IIS接口,可以满足嵌入式系统对于可靠、高速数据传输的需求,提升系统性能和稳定性。IIS接口,又称为I2S(Inter-IC Sound)接口,最早由飞利浦公司(Philips)提出,用于音频设备之间的数字音频传输。在嵌入式系统中,使用IIS接口实现高效通信是一种常见的做法。 阅读详情

1.IIS通信原理

除了电源引脚和芯片使能引脚,INMP441的引脚还包括SCK、SD、WS和L\R:
SCK:I2S时钟线,是由主机产生的高频方波,用来控制每位数据的传输时序
SD:I2S数据线,从机通过这根线把AD采样值发送给主机
WS:I2S声道选择线,I2S协议可以传输左右两个声道的数据,WS信号是由主机发送给从机的,从机根据WS的电平高低,判断当前数据帧发送左声道还是右声道数据,WS低电平时,从机发送左声道数据,高电平发送右声道。
L/R:芯片左右声道选择线,每个麦克风只能检测一处声源,因此若要进行双声道录音,就要使用两个模块,一左一右放置。

2.代码

2.1c库重定向

#include <stdio.h>
//c函数库的重定向
int fputc(int c,FILE* s)
{
	HAL_UART_Transmit(&huart1,(const uint8_t*)&c,1,0xFFFF );
	return c;
}

2.2全局变量

/* USER CODE BEGIN PV */
uint32_t dma[4];
uint32_t val24;
int val32;
/* USER CODE END PV */

2.3回调函数

/* USER CODE BEGIN 0 */
unsigned cb_cnt=0;
//I2S接收完成回调函数
void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s)
{
	if(hi2s==&hi2s2){
		cb_cnt++;//回调次数计数
		//将两个32整型合并为一个
		//dat32 example: 0000fffb 00004f00
		val24=(dma[0]<<8)+(dma[1]>>8);
		//将24位有符号整型扩展到32位
		if(val24 & 0x800000){//negative
			val32=0xff000000 | val24;
		}else{//positive
			val32=val24;
		}
		//以采样频率的十分之一,串口发送采样值
		if(cb_cnt%10==0)
			printf("%d\r\n",val32);
	}
}
/* USER CODE END 0 */

2.4主函数

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2022 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "dma.h"
#include "i2s.h"
#include "usart.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include <stdio.h>
//#include "stm32f1xx_hal.h"
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */
uint32_t dma[4];
uint32_t val24;
int val32;
/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
unsigned cb_cnt=0;
//I2S接收完成回调函数
void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s)
{
	if(hi2s==&hi2s2){
		cb_cnt++;//回调次数计数
		//将两个32整型合并为一个
		//dat32 example: 0000fffb 00004f00
		val24=(dma[0]<<8)+(dma[1]>>8);
		//将24位有符号整型扩展到32位
		if(val24 & 0x800000){//negative
			val32=0xff000000 | val24;
		}else{//positive
			val32=val24;
		}
		//以采样频率的十分之一,串口发送采样值
		if(cb_cnt%10==0)
			printf("%d\r\n",val32);
	}
}
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_DMA_Init();
  MX_I2S2_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  //开启DMA传输
  HAL_I2S_Receive_DMA(&hi2s2,(uint16_t*)dma,4);	
  while (1)
  {
  	HAL_Delay(10);
	
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}
//后面都是Cube自动生成的代码,省略

3.完成图

华为防火墙双线路配置实战:5分钟搞定主备自动切换(含健康检查避坑指南) 本文详细介绍了华为防火墙双线路配置实战,包括主备自动切换和健康检查机制的优化技巧。通过智能健康检查机制,华为防火墙能实现毫秒级故障自动切换,确保网络高可用性。文章提供了从架构设计到实战配置的全流程指南,并分享了常见配置误区与解决方案,帮助中小企业快速搭建稳定可靠的网络架构。 阅读详情

相关推荐

西门子工业物联网云平台 Insights Hub 技术白皮书

Insights Hub是西门子公司推出的工业物联网云平台,它是一个使用开放技术的基于云架构的平台,能够为制造业企业提供物联网连接、数据分析、应用开发等一系列服务。Insights Hub的设计理念是“连接、分析和运营”,即通过连接物理设备、收集数据并进行分析,来优化工业生产的运营和管理。

可爱的刘三岁的博客 3332

【通信协议】I2S/IIS总线介绍

在工作中音频采集和输,AD和主芯片之间的通信都是使用IIS进行的,出现没有音频输入输出时,由于对IIS的了解不足,不清楚主从模式、Bclk、Lclk、Mclk之间的区别,对问题的排查很是不便,所以在此对IIS进行一个总结;只是在应用层的使用,不具体到底层实现与时序 简介 音频总线 (I2S) 是用于将数字音频器件连接在一起的串行总线接口标准 IIS使用场景: 麦克风在机械振动下将声音信号转变为电压信号,电压信号经过放大等处理,给到ADC采样,将模拟信号转化为数字信号;数字信号经过编码、存储、压缩等技术后

叮咚的博客 2万+

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 187

IIS协议

IIS总线协议 Inter-IC-Sounder总线,数字音频设备之间的音频数据传输的总线线标准。 典型的IIS三个信号线: 1、串行时钟(SCK),也叫位时钟,每个脉冲对应数字音频的每一位数据,以左右双通道音频为例,SCK频率 = 2 × 采样频率 × 采样位数 2、帧时钟(WS),也叫字时钟,WS频率 = 采样频率 ,WS = 0,左声道,WS = 1,右声道 ​ WS可以在串行时钟的上升沿或下降沿改变,并且左右声道不一定要对称 ​ 比数据位最高位MSB早一个时钟改变,这一个时钟周期可以存储前一帧后清空

gggpppbbb的博客 1万+

保姆级教程:SAP ABAPer如何为VF01销售发票和MIRO发票校验配置凭证替代(含AC_DOCUMENT BADI完整代码示例)

本文详细解析了SAP ABAP中通过AC_DOCUMENT BADI实现VF01销售发票和MIRO发票校验的凭证替代技术。从技术选型到BADI实施步骤,再到核心逻辑代码示例,为ABAP开发者提供了一套完整的解决方案,帮助应对财务部门复杂的业务需求。

weixin_30421809的博客 349

深入排查127.0.0.1拒绝连接:从端口占用到Tomcat服务启动的完整解决方案

本文针对开发者访问127.0.0.1时遭遇“拒绝连接”的常见问题,提供了一套完整的排查与解决方案。文章从端口占用检查入手,详细讲解了使用netstat命令识别进程,并深入分析了服务监听地址、IPv6配置、防火墙以及Tomcat服务安装与启动等核心环节。通过实战演练,指导读者系统性地解决从网络层到应用层的各类连接问题,最终确保本地服务成功运行并可通过本地回环地址正常访问。

weixin_29279047的博客 3183

Audio-音频传输接口(I2S、PCM、PDM)

音频接口

u010783226的专栏 1万+

51智能小车(双轮)

前几天接了个小单子,是一个基于51单品机的作品,发现自己对小车的认识还是不太🆗。也算是完成了任了的;欢迎各位小伙伴来多多交流,大家一起进步。最后有需要单片机课程设计的小伙伴滴滴我哦(有偿)。企鹅:2397746994。

qq_56992543的博客 2346

IIS接口详细介绍

1. 概述 I2S = Inter-IC Sound = Integrated Interchip Sound = IIS,是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内器件之间传输,例如编解码器CODEC、DSP、数字输入/输出接口、ADC、DAC和数字滤波器等。其与IIC无关联。 2. 硬件结构 IIS是个相对来说简单的接口协议...

莫比乌斯的硬件花果山 3万+

DeerFlow 系列教程 附录 | 核心文件索引、官方文档索引与推荐阅读顺序

DeerFlow 系列教程 附录本附录汇集了 DeerFlow 项目的核心文件索引、官方文档索引和推荐阅读顺序三份速查资料,方便读者在日常开发和学习中快速定位关键代码与文档。内容按实际项目目录结构整理,所有路径均基于 DeerFlow 2.0 版本验证。

weixin_43674738的博客 327

学Simulink--基础微电网场景实例:基于Simulink的微电网经济调度优化策略仿真

指标传统调度PSO经济调度(本文)目标值总运行成本(元/h)45.232.5(工况1)降低≥20%调度响应时间(s)25<30储能SOC范围(%)50~50(不变)28~56(动态优化)20~80弃风弃光率(%)0(强制满发)0(优化消纳)0原理:微电网经济调度通过PSO算法优化各单元出力,以总成本最小化为目标,平衡功率平衡与设备约束;建模:Simulink中用实现PSO控制器,结合PV/WT/DG/ESS模型,完成闭环优化;验证。

amy_mhd的博客 67

MEMS mic之IIS mic(三)

microphone家族中还有不可或缺的IIS mic,这个mic相比于PDM mic和Analog mic在应用方便来说就少很多了,但存在即必有需求,在特定的应用中IIS mic比其他两种mic更加合适,

山无忧的博客 1562

道家学派创始人老子,对 SAP ABAP 这门编程语言的客观评价

SAP HANA 之引入,使 ABAP 于处理大数据,云计算等新兴领域,展现新的生命力,如老吾老以及人之老,幼吾幼以及人之幼,扩展其在信息技术领域的应用,以涵养更广之需。ABAP 能以数据为基,流转于系统之中,如道法自然,顺应企业之生态,助之以高效运转,减少冗杂,简化管理,使企之运营,如小国寡民,无为而治。然 ABAP 如老树盘根,更替不易,面对新兴技术,如云计算、大数据等,其更新之速,未能与时俱进。如水之于渊,柔而能胜刚,ABAP 之发展,顺时而动,应需而变,其在编程领域,犹如道之于万物,渐不可或缺矣。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1018

通信总线二:IIS、CAN

I2S I²S(Inter-IC Sound),是一种用于将数字音频设备连接在一起的电气串行总线接口标准。 它用于在电子设备中的集成电路之间传送PCM音频数据。 I²S总线将时钟和串行数据信号分开,从而使接收器比需要从数据流中恢复时钟的异步通信系统所需的接收器更简单。 总线至少包括三条线路: 1 位时钟线 官方命名“连续串行时钟(SCK)”。通常写成“位时钟(BCLK)”。 2 字时钟线 官方命名...

zsmcdut的博客 3789

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IIS协议及波形分析

一、I2S总线规范 I2S总线拥有三条数据信号线,一条时钟同步线: 1、SCK: (continuous serial clock) 串行时钟 对应数字音频的每一位数据,SCK都有1个脉冲。SCK的频率=2×采样频率×采样位数。 2、WS: (word select) 字段(声道)选择 用于切换左右声道的数据。WS的频率=采样频率。 命令选...

Wolf的专栏 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IIC,SPI, UART,IIS 协议

学习笔记

weixin_45598837的博客 1257

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

2通道音频ADC解码芯片ES7243L、ES7243E、ES7243,用于低成本实现模拟麦克风转换为IIS数字话筒

ES7243是麦克风阵列应用ADC,2通道高性能Delta-Σ 音频 ADC

易板 4671

I²S协议概述与信号线说明

I²S协议(Inter-IC Sound)是飞利浦提出的用于数字音频数据传输的串行总线标准,常用于微控制器、音频编解码器和数模转换器之间的数据交换。I²S协议包括位时钟(BCLK)、字选择时钟(LRCK/WS)和数据输入输出(DIN/DOUT)等信号线。协议支持双声道音频数据传输,通过BCLK同步数据传输,LRCK指示左右声道,DIN/DOUT传输实际音频数据。常见的工作模式包括标准I²S、左对齐(Left-Justified)和右对齐(Right-Justified),每种模式对数据的对齐和时钟的关系有所

weixin_52342399的博客 2578

iis接口

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.youkuaiyun.com/weixin_42509369/article/details/83548748。IIS协议定义三根信号线:时钟信号SCK、数据信号SD和左右声道选择信号WS。SCK:模块内的同步信号,从模式时由外部提供,主模式时由内部产生;SD:串行数据,以二进制补码形式在数据线上传输;√ WS=0,表示选择左声道。√ WS=1,表示选择右声道。

he30837993的博客 410

SPI IIS 协议

SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在EEPROM,FLASH,实时时钟,AD转换器。所以不难发现,菊花链模式充分使用了SPI其移位寄存器的功能,整个链充当通信移位寄存器,每个从机在下一个时钟周期将输入数据复制到输出。(从机的输出作为下一个从机的输入),不断循环直到数据到达目标设备的方式被称为。在数字通信世界中,在设备信号(总线信号或中断信号)SCK为时钟信号,8clks表示8个边沿信号;

forsete的博客 831

一起玩儿物联网人工智能小车(ESP32)——67 I2S协议简介

摘要:本文介绍I2S通信协议的基本知识

一起玩儿科技 1091

IIS接口协议

I2S = Inter-IC Sound = Integrated Interchip Sound = IIS,是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内器件之间传输,例如编解码器CODEC、DSP、数字输入/输出接口、ADC、DAC和数字滤波器等。在WS变化后的第一个SCK脉冲,IIS协议定义三根信号线:时钟信号SCK、数据信号SD和左右声道选择信号WS。SCK:模块内的同步信号,从模式时由外部提供,主模式时由内部产生;√ WS=1,表示选择右声道。

qq_41883039的博客 2361

IIS协议基础知识讲解

本文章期望能让大家更简单,更明了的入门学习到IIS协议。

qq_54564988的博客 1146

杰理之IIS WS(word select)字段(声道)选择【篇】

同时也称为LRCK(帧时钟),当WS=0,表示是左声道,WS=1,表示是右声道。LRCK的频率等于采样频率。

u013820168的博客 304

mini2440硬件篇之IIS

IIS(集成音频接口)于上个世纪80年代首先被Philips公司用于消费产品的音频设备。被广泛运用于CD、数字音频磁带、数字音频处理器和数字TV音频。 IIS的组成一般来说包括4个管脚:串行数据输入(IISDI)、串行数据输出(IISDO)、左/右通道选择(IISLRCK)、串行位时钟(IISCLK);产生IISLRCK和IISCLK的是主控器。在S3C2440上和IIS相关的接口还有一个用于提

幕天席地的专栏 3256

IIS接口传输简介

IIS接口 IIS为硬件接口,用来传输声音数据,也就是只能够用来传输声音或者接受声音,在硬件上,IIS控制器与音频编解码芯片以IIS接口相连,如下图VM8976G芯片,因此对于声音音量等设置等用L3接口来控制,也可以用IIC接口来控制,IIS和IIC是两个完全不一样的接口,一般连接到CPU的IO控制器,其中CDLCK是系统时钟,由CPU提供给编解码芯片使用 播放和录音过程: 播放:从内存把数据传给IIS控制器,IIS控制器根据IIS接口传给音频编解码芯片,音频编解码芯片中用DAC把数字信号转换为模

月月鸟呀的博客 7157
上一篇: 【立创EDA专业版】GD32F103C8T6最小系统板PCB
下一篇: 【24电赛day3】DAC+DMA+TIM产生正弦波
Linzaii
博客等级 码龄4年 364粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linzaii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值