Portapack应用开发教程(十一) 加入内置麦克风
现在我的portapack已经带内置电池+开关和内置喇叭了,为了使它用起来更像一个对讲机,我打算装一个内置麦克风上去。
其实很久以前星天无线出的老款portapack是带有内置麦克风的,后来新款都把这个功能去掉了。
我现在打算把它加回去,我评估了一下,需要改软件和硬件。
软件部分我已上传至github,跟之前内置喇叭一样,我加了一个软件开关,软件开关可以切换使用3.5mm耳机带有的麦克风或内置麦克风。它具体的实现原理是根据AK4951声卡芯片的datasheet去使用56引脚,5引脚用来供电,6引脚用来接收声波信号输入。
除了更改软件,还需要更改硬件,5引脚上要接一个2k2电阻,6引脚上要接一个1u电容,然后两个引脚接到驻极体的正极,驻极体负极接地。
详细得过程如下:
这里摘录几张datasheet里的图片,我的软硬件修改就是基于这几张图片做的。
可以看到internal mic也就是内部mic用了MPWR1(电源)和LIN1 RIN1(左右声道输入)这3个引脚,接电源要经过电阻,接输入口要经过电容。并且这个电阻和电容可以参考external mic,应该是一样的。
上面的图可以看到,我们要用的MPWR1和RIN1 LIN1分别是芯片上的567这3个引脚。
根据这个图,目前的mic应该是只接了左声道(LIN2)和电源(MPWR2),没有接右声道(RIN2),为了简化焊接步骤,这样我打算内置麦克风也只接一个声道RIN1,。
接下来看一下datasheet,研究一下软件上如何启用我要的5、6引脚。
这是控制电源的,你可以找到原来代码mictx调用的打开麦克风函数,看一下本来用的mpwr相关的赋值应该是1,改为0就会把电源输出从mpwr2切换到mpwr1了。另外pmmp得是1,这样电源才会启用。你可以测试一下,当打开mpwr1后,可以在5引脚上测到2.4v电压。
这里是选择麦克风,本来代码里应该是0b01,因为用的是LIN2,现在要用LIN1/RIN1改为0b00即可。
其他剩下的修改就只是界面上的修改了,方便操作,可以直接在界面上切换要用的麦克风。
视频参见:
https://www.bilibili.com/video/BV16Q4y1A76r
我打了新的pcb,发现麦克风声波信号收不到,我把6和7引脚短路掉也就是,左声道和右声道接在一起才可以,我怀疑RIN1有问题,下次生产要接到LIN1上。我看了我的固件,实际这两个口都启用了。
Portapack应用开发教程(十一) 加入内置麦克风相关推荐
- 解决win10笔记本内置麦克风不能用的历程和方法
PS:解决方法在文章最下方 起因 本来今天想着继续写CIM项目文章,但是想着如果配合文章,发一个讲解视频的话效果应该会更好,于是凭着编程的本能反应,第一步是看一看麦克风能不能用,毕竟之前为了唱歌一直把 ...
- python 全栈开发,Day51(常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍)...
昨日内容回顾 1.三种引入方式1.行内js <div onclick = 'add(3,4)'></div>//声明一个函数function add(a,b){}2.内接js& ...
- 音视频技术开发周刊:FFmpeg内置的一个无中生有的音视频输入数据 | 214
每周一期,纵览音视频技术领域的干货. 新闻投稿:contribute@livevideostack.com 火山引擎视频云:坚持基础技术创新,打造极致用户体验 从toC到toB,作为抖音背后的视频技术 ...
- python内置函数open_Python学习教程:Python内置函数大总结(下篇)
这里接着上次的 Python学习教程,给大家总结了Python 剩下的33个内置函数. 31 hash() 返回对象的哈希值 In [112]: hash(xiaoming)Out[112]: 613 ...
- api 微信内置浏览器js_【微网站开发】之微信内置浏览器API使用
最近在写微网站,发现了微信内置浏览器的很多不称心的地方: 1.安卓版的微信内浏览器底部总是出现一个刷新.前进.后退的底部栏,宽度很大,导致屏幕显示尺寸被压缩 2.分享当前网站至朋友圈时,分享的图片一般 ...
- 微信公众号开发,清除微信内置浏览器缓存
在做微信开发的时候(主要是微信内网页或者比较大型的手机网站)的时候,更改了页面代码,但是微信内置浏览器有缓存,还是之前的效果,影响调试,而且还死活清除不掉!!!!!怎么办? 我的第一想法是关闭手机的微 ...
- java流控_t-io小教程:tio-http内置的流控功能
从事互联网应用平台的开发,安全一直是个工作量很大的领域,而流控则属于安全的一部分,为此tio-http特意内置了流控功能,我们来看看tio-http流控的使用步骤 1.实现SessionRateLim ...
- JavaScript知识点总结(十一)- 内置对象
目录 一.什么是内置对象 二.查询文档 2.1 MDN 2.2 如何学习对象中的方法 三.Math对象 3.1 Math概述 3.1.1 案例练习 - 封装自己的Math对象 3.1.2 Math绝对 ...
- 微信开发:JS自动关闭内置浏览器回到微信对话窗口
自动关闭当前浏览器内置函数: 直接调用即可 setTimeout('WeixinJSBridge.call("closeWindow")', 1500); 延迟执行可加可不加,按需 ...
最新文章
- 潮州市云计算数据中心挂牌 粤东地区规模最大
- 一种基于分层聚合的3D实例分割方法(ICCV 2021)
- Zookeeper分布式一致性原理(八):Zookeeper典型应用场景
- Spring Bean范围
- 混凝土墙开洞_新乐专业混凝土切割报价适中
- 什么是软件开发模式?
- wget 下载 设置cookie
- 单片机12864带字库汇编使用教程
- python结巴分词代码_结巴分词Python代码
- Windows解压tar.gzip文件
- 借助WinPE进行Windows系统安装
- Android仿淘宝头条垂直滚动,垂直走马灯,公告
- 胡阳pyhton作业题--20150728
- PS 2019 Mac版 自学入门系列(十)—— 自定义黑白
- PanDownload作者被抓,为何大家都对百度网盘如此气愤?
- 系统镜像的方法,大批量电脑重装的方法
- linux 修改vg名称,hp-ux 修改vg属性 | 旺旺知识库
- #XDOJ 172 构造表达式
- Ceph 认证授权和RBD块存储、对象存储使用(三)
- PHP来客在线客服系统源码 带安装教程