草庐IT

物联网开发笔记(51)- 使用Micropython开发ESP32开发板之通过MAX98357 I2S音频模块播放音乐

一、目的       这一节我们学习如何使用我们的ESP32开发板来播放音乐。二、环境       ESP32+MAX98357I2S音频模块+ThonnyIDE+几根杜邦线接线方法:三、代码   代码1,播放wav格式文件:wav格式文件几百K,别太大ESP32存储空间有限。音频格式转换网站:在线转换音频文件frommachineimportI2S#导入I2S协议库,什么是I2S自行百度frommachineimportPin"""GPIO13--DINGPIO12---BCLKGPIO14--LRCGND--GND5V或3.3V--VCC"""#初始化引脚定义sck_pin=Pin(12)

FPGA实现IIC协议(二)----IIC总线的FPGA实现(单次读写驱动)

1、写在前面    IIC协议系列博文:        FPGA实现IIC协议(一)----初识IIC总线        FPGA实现IIC协议(二)----IIC总线的FPGA实现(单次读写驱动)    上一篇文章已经对IIC总线做了详细的介绍,了解了IIC总线的读写方式。这篇文章我们编写一个基于FPGA的IIC驱动模块,并对这个模块进行仿真及上板验证。2、单次读写时序    首先来回顾一下IIC总线单次读写时序。    单次写时序如下:         单次读时序如下:大致总结一下单次写时序的过程(假设从机均正确响应,若响应不正确或不响应则跳转到初始状态重新开始写操作):发送起始信号,一次

FPGA实现IIC协议(二)----IIC总线的FPGA实现(单次读写驱动)

1、写在前面    IIC协议系列博文:        FPGA实现IIC协议(一)----初识IIC总线        FPGA实现IIC协议(二)----IIC总线的FPGA实现(单次读写驱动)    上一篇文章已经对IIC总线做了详细的介绍,了解了IIC总线的读写方式。这篇文章我们编写一个基于FPGA的IIC驱动模块,并对这个模块进行仿真及上板验证。2、单次读写时序    首先来回顾一下IIC总线单次读写时序。    单次写时序如下:         单次读时序如下:大致总结一下单次写时序的过程(假设从机均正确响应,若响应不正确或不响应则跳转到初始状态重新开始写操作):发送起始信号,一次

【Python FT4222 I2C通信】

PythonFT4222I2C通信前言一、FT4222二、使用步骤1.引入库2.访问I2C从设备3.访问结果总结前言硬件调试过程,常要通过I2C通信。利用Python结合I2CMasterdevice,调试和开发自动化测试软件,简单快捷。本文就简单介绍其中一种。一、FT4222FT4222是一种支持SPI和I2C通信协议的USB接口设备。“LibFT4222”库提供了高级api以方便应用程序开发。I2C接口可以配置为主模式或从模式。SPI接口可以配置为单、双、四比特宽数据传输的主模式或单比特宽数据传输的从模式。二、使用步骤1.引入库代码如下:importreimportsysimportft4

i2c-tools工具集

一i2c-tools工具集介绍i2c-tools是一个专门调试i2c设备的开源工具集,在嵌入式开发中经常使用,该工具集包含以下命令:i2cdetect、i2cdump、i2cget、i2cset。i2c-tools的重要意义就是开发人员既不需要编写复杂的Linux驱动、也不需要编写应用程序,只需要输入几个简单的命令就可以调试i2c设备,比如:设置i2c设备寄存器获得i2c设备寄存器的值二i2c-tools工具集详细操作i2cdetect:查询开发板包含的i2c总线和外设,看以下命令:i2cdetect-l探测开发板包含的i2c总线从命令执行结果可知,开发板包含2个i2c总线控制器i2cdete

Linux I2C驱动分析2 - 通过设备树添加设备

一.I2C通过设备树添加设备    通过设备可以向I2C总线添加I2C设备,设备树举例如下:i2c:i2c@900{compatible="ralink,rt2880-i2c";reg=;resets=;reset-names="i2c";#address-cells=;#size-cells=;pinctrl-names="default";pinctrl-0=;oled{compatible="oled0.98";reg=;};};    设备树中在I2C总线下添加了一个oled0.98设备,oled在I2C总线中的地址为0x3c。可以在/sys/bus/platform下看到这个设备。#

【分析笔记】全志 i2c-sunxi.c 控制器驱动分析

分析平台:全志A64内核版本:Linux4.9数据手册:Allwinner_A64_User_Manual_V1.1.pdf(whycan.com)驱动框架I2C设备驱动作为方案应用来说,我们是最经常要动的地方,这一层主要与具体的芯片功能强关联,不同的芯片具有不同的使用方法,如触摸屏设备驱动。核心框架层Linux提供的硬件抽象层,起到承上启下的作用,对上提供注册设备驱动的统一接口,对下提供硬件控制器接入统一接口,负责维护众多的设备驱动和适配器驱动。适配器层由Soc芯片原厂提供,通常Soc支持多少路I2C总线,就会有多少个硬件控制器,这些硬件控制器才是真正实现与外设芯片通信的地方。我们也可以通过

HDL语言与验证-I2C

 工程文件:电子测试平台2        这个实验的第一部分写个状态机还是很简单的,第二部分I2C只给了一份没什么注释的代码......。看懂后我写了一个老师给出的IIC代码的解释,但是md格式丢掉了,PDF在github上,可以参考一下。HDL语言与验证实验一、自定FSM说明1、状态描述      设计如下状态,表示单日活动轨迹:S0:宿舍休息S1:起床并吃早餐,吃完后有课则上课(b=1),无课自习,体温异常(T>37)则留在寝室休息S2:12节上课,若34有课则继续去上课(c=1),否则自习S3:12节自习,若34有课则去上课(c=1),否则自习S4:34节上课,结束后去吃午餐S5:34节

HDL语言与验证-I2C

 工程文件:电子测试平台2        这个实验的第一部分写个状态机还是很简单的,第二部分I2C只给了一份没什么注释的代码......。看懂后我写了一个老师给出的IIC代码的解释,但是md格式丢掉了,PDF在github上,可以参考一下。HDL语言与验证实验一、自定FSM说明1、状态描述      设计如下状态,表示单日活动轨迹:S0:宿舍休息S1:起床并吃早餐,吃完后有课则上课(b=1),无课自习,体温异常(T>37)则留在寝室休息S2:12节上课,若34有课则继续去上课(c=1),否则自习S3:12节自习,若34有课则去上课(c=1),否则自习S4:34节上课,结束后去吃午餐S5:34节

多线程交替输出A1B2C3D4...你怎么实现?

引言不知道最近有没有小伙伴去面试,今天了不起回想到了早期去面试遇到的一个多线程面试问题。面试问题是一个笔试题:两个线程依次交替输出A~Z,1到26,形如A1B2C3D4...当时的我还很菜,用了原生的线程,借助wait和notify方法实现。伙伴们你们也可以先暂停,自己思考下用什么方式来实现。今天了不起和伙伴们一起来基于JDK1.8进行实现方式的探索,请看下文。1.使用线程方法wait()方法会使当前线程释放锁,并进入等待状态,直到以下情况之一发生:被其他线程调用notify()方法唤醒;被其他线程调用notifyAll()方法唤醒;被其他线程中断。notify()方法用于唤醒一个正在等待的线