STM32的I2S接口只支持单工模式,使用时要小心

发布者:SparklingStar最新更新时间:2024-10-16 来源: cnblogs关键字:STM32  I2S接口 手机看文章 扫描二维码
随时随地手机看文章

刚开始设计硬件的时候没仔细看手册,想当然,把I2S_SD连接到PCM CODEC输入,MISO连接到CODEC输出,结果做软件的时候遇到麻烦才回头看手册,傻眼了,STM32的I2S数据线只有一根I2S_SD,要么输入,要么输出,跟全双工CODEC没法通讯,这一点跟NXP LPC和比是个很大的败笔。


解决方法(PCM接口模式):将STM32工作在SPI SLAVE方式,MOSI接CODEC输出,MISO接CODEC输入,SCK接BCLK,任意一个PIO作为中断输入与FRAME SYNC连接。


如果想使用DMA,需要将帧频率(采样频率)设置为BCLK的字长倍,比如16bit字长,采样频率8K,则Fsync设置为8K*16=128K,当一个FSYNC中断后设置DMA,后续即可连续输入/输出。


关键字:STM32  I2S接口 引用地址:STM32的I2S接口只支持单工模式,使用时要小心

上一篇:STM32 USBHID应用
下一篇:uCosII移植到STM32触发中断、任务切换的汇编学习

推荐阅读最新更新时间:2026-03-04 13:38

STM32I2S接口只支持单工模式,使用时要小心
刚开始设计硬件的时候没仔细看手册,想当然,把I2S_SD连接到PCM CODEC输入,MISO连接到CODEC输出,结果做软件的时候遇到麻烦才回头看手册,傻眼了,STM32的I2S数据线只有一根I2S_SD,要么输入,要么输出,跟全双工CODEC没法通讯,这一点跟NXP LPC和比是个很大的败笔。 解决方法(PCM接口模式):将STM32工作在SPI SLAVE方式,MOSI接CODEC输出,MISO接CODEC输入,SCK接BCLK,任意一个PIO作为中断输入与FRAME SYNC连接。 如果想使用DMA,需要将帧频率(采样频率)设置为BCLK的字长倍,比如16bit字长,采样频率8K,则Fsync设置为8K*16=12
[单片机]
实战解析:通过一个小项目掌握STM32所有外设
一、项目目标:实现外设间的无缝协同 本项目旨在实现一个清晰的核心功能: 读取数据() 显示温度在 上() 温度超限时蜂鸣器报警(PWM/) 通过按键调整报警阈值(GPIO 输入) 通过串口输出调试信息() 后台定时刷新显示(定时中断 + ) 这一个项目,几乎覆盖了 的全部核心外设模块,是最适合系统学习的实践框架。 二、外设初始化思路 1. RCC 系统 所有外设都依赖时钟。先开启 GPIO、USART、C、M、I2C 等模块的时钟。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE); RC
[嵌入式]
基于STM32的矿井作业环境监测系统设计与实现
针对煤矿开采中瓦斯爆炸等严重安全隐患,设计了一套矿井安全系统。该系统实时监测瓦斯浓度、温度、火情、粉尘等环境参数,自动控制除尘、灭火、通风等设备,以保障矿井安全。通过WiFi将数据传输至监控平台,并支持APP远程监控与操作,从而提升应急响应速度和管理效率。 PART 01 系统总体结构 系统实现了对矿井内甲烷气体体积分数、粉尘浓度、火焰及温湿度等关键参数的实时采集与分析;并通过预设的自动控制策略触发联动设备,实现安全隐患的快速响应与主动防控。同时,支持数据远程传输至云端平台,并通过机智云APP提供实时监控、报警及远程操控功能,为矿井安全管理提供高效、可靠的技术支撑。系统总体结构如图1所示。 PART 02 系统详细设计
[单片机]
基于<font color='red'>STM32</font>的矿井作业环境监测系统设计与实现
STM32单片机AD4630-24驱动程序
AD4630-24是亚德诺推出的一款24位双通道支持同步采样的ADC,高昂的售价注定了这不会是一款常用芯片,我在做驱动开发期间在中文互联网基本没有找到可以参考的资料或例程。但这次毕竟做的是一款高精度同步电压电流表,这款芯片是领导亲自选的,要求很明确,就是分辨率拉满,咱也只能硬着头皮开干。 这次也是分享以下驱动开发的思路和例程,希望能够帮助到相关人士,顺便,这款芯片要求5V和1.8V双电源供电也是让硬件同事疯狂吐槽。 1.通讯接口 AD4630-24支持串行通讯,为了提高采样结果的读取速率,SDO最高支持8通道同步输出,但很可惜这次使用的单片机是STM32F407,意法连QSPI都不给,只能使用标准的SPI接口通讯,例程也
[单片机]
深夜!我偷偷的把室友的STM32换成了GD32
一、什么是GD32 GD32是由北京兆易创新开发的国产32位MCU,基于Arm Cortex- M3/M23/M4内核以及RISC-V内核的32位通用微控制器,与STM32相比,CPU主频更高,内存更多,外设更丰富。其众多产品是以STM32芯片为模板,基于STM32的底层寄存器地址进行正向研发,部分产品可以直接PIN TO PIN替代STM32的芯片,部分型号可以直接以STM32的程序做部分修改后直接烧入进GD32中运行,例如GD32E103、GD32F10x、GD32F30x都是和STM32F10x系列是完全PIN TO PIN兼容的,内部地址寄存器完全兼容,唯一区别只是内核不同,但在使用外设时影响不会很大。 一个大胆的想法
[单片机]
野火STM32学习笔记(构建库函数模型第五节课)
解释初始化函数是怎么运作的 第四节课我们已经了解了如何通过固件库编程的方式初始化一个GPIO口,配置其速度,工作模式等等,这一切都有一个“幕后黑手”就是那一个一百多行的GPIO_Init()函数。我们再来一睹一下芳容: 第一部分 我们从第一行开始看: 大括号内第一二行都是存放这些变量的初始值,可以不用太在意。再看下面模式配置那边,第一行注释是把模式的低四位存入变量currentmode,这样做的目的是取出这些值(与0x0F相与取值),再判断它的bit4位是几(如下图),是0则是输入,是1则是输出,判断方式也很简单,即赋值给currentmode的值和0x10(二进制00010000)与运算,看看是不是0就知
[单片机]
让人神往的STM32经验大抵如此
单片机用处这么广,尤其是STM32生态这么火!如何快速上手学习呢? 你要考虑的是,要用STM32实现什么? 为什么使用STM32而不是用8051?是因为51的频率太低,无法满足计算需求?是51的管脚太少,无法满足众多外设的IO?是51的功耗太大,电池挺不住?是51的内存太小而你要存储的东西太多?还是51的功能太弱,而你要使用SPI、I2C、ADC、DMA? 当你需要使用STM32某些功能,而51实现不了的时候,那STM32自然不需要学习,你会直接去寻找STM32某方面的使用方法。比如要用spi协议的网卡、要使用串口通信、要使用rtos等等。 寄存器vs库函数 我的观点是:当你debug的时候寄存器很重要,当你需要理解芯片工作
[单片机]
STM32 USART学习
USART(同步异步串口通信) 在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。还可以使用DMA方式,实现高速数据通信 STM32 中的USART框图 框图 1、引脚编号 TX:发送数据输出 RX:接收数据串行输入 SCLK(位于最右边):发送器时钟输出,仅同步通信时使
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved