你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

亚马逊Dash按钮和stm32的奇妙经历(上)

[复制链接]
丿灬幸灬 发布时间:2018-11-1 10:36
本帖最后由 丿灬幸灬 于 2018-11-2 21:55 编辑

概述
这个一个项目日志是我的STM32冒险。
我的玩具盒包括亚马逊Dash按钮,WiFimCu和其他一些零星杂物。

基于UART的I2S PCM

我把被敲打的I2S数据转储到DASH的串行控制台,并将其记录到一个文件中。经过几个小时的等待,我能够启动一个小的No.js程序,把ASCII转换成二进制BLB。把它导入Advand并得到这个甜美的波形。太糟糕了,听起来像是静止的。
1.png

代码如下
  1. var fs = require('fs');
  2. var convertHex = require('convert-hex');
  3. var tokenizer = require('tokenizer');

  4. var t = new tokenizer();
  5. t.addRule(/^0x[0-9A-Fa-f]+$/, 'half');
  6. t.addRule(/^\w+$/, 'junk');
  7. t.addRule(/^\s+$/, 'whitespace');
  8. t.addRule(/^.$/, 'whitespace');

  9. var pcm = fs.createWriteStream('pcm.raw');

  10. var bytes = [];
  11. t.on('token', function(token, type) {
  12.         if (type == 'half') {
  13.             if (token.content.length == 6) {
  14.                 var b = convertHex.hexToBytes(token.content);
  15.                 bytes.push(b[0], b[1]);
  16.             }
  17.         }
  18. });

  19. t.write(fs.readFileSync('../audio.log', { encoding: 'utf8' }));

  20. t.on('data', function() { });

  21. t.on('error', function(error) {
  22.         console.log(error);
  23.         pcm.write(new Buffer(bytes));
  24.         pcm.end();
  25. });

  26. t.on('end', function() {
  27.         console.log("DONE");
  28.         pcm.write(new Buffer(bytes));
  29.         pcm.end();
  30. });

  31. t.end();
复制代码

Amazon Dash的软件I2S

过去的几个晚上我一直在拼凑需要的麦克风。我对时钟、锁相环、DMA,甚至I2S都不太了解,所以对于哪种代码去哪儿有很多头脑不清楚和手舞足蹈。

WSDICSDK中的STM32 F2代码库缺少一个PielFixI2S.C驱动程序。我举起了STM32 F4的PielFixI2S.C,删除了让我迷惑的东西。在调用我的新._i2s.c之前,我编写了一个短小的ADMP441驱动程序来设置正确的GPIO,它将在这里设置I2S块和DMA通道。

我一直在努力让DMA在一块麦克风数据完成后生成一个中断,因此我关闭了该代码,而专注于通过等待SPI RX中断并有效地轮询总线来获取数据。我只得到零或挂起的过程,所以我怀疑要么时钟/PLL设置是错误的,要么麦克风只是没有启用。

我没有逻辑分析器(实际上我今天在eBay上订了一个便宜货),所以我不能验证Dash的CLK和WS引脚是波形还是恒定电压。我想,一旦逻辑分析仪收到邮件,我就可以使用热气枪来移除麦克风,并在两者之间插入探针,以帮助调试DMA问题。

不管怎样,今天我设法从I2S SPI端口获得实际数据。
2.png
我不知道这是不是真正的PCM数据,但它肯定比一堆什么都不是的好。



Dash按钮的I2s麦克风

我一直致力于迫使亚马逊短跑的I2S麦克风用WSDE SDK生成一些IRQ,但到目前为止还没有运气。

我已经把芯片EN(PC1)高了,可以看到它在我的DMM上保持很高。我已经通过stm32f2xx_spi.c库调用打开了I2S PLL,在SCK(PB10)上测量了1.5V——没有范围,我希望这是一个波形,而不是恒定电压。

这是我的Github RePo上的一个分段补丁。大部分代码都是从WSDICSDK中的STM32 F4XX文件夹复制粘贴的。

Github 库

我在这里安装了一个GITHUB存储库:http://github.com/gtalusan/redash这有一个指令,建立一个固件,并部署它与一个Stlink链接V2的亚马逊Dash。

随性的SPI
我试图找出为什么我只能成功地写和擦除我的短跑闪光灯一扇区一次。左边是M25P16的数据表,中间是Broadcom的WICED SDK用来擦除扇区和整个芯片的SPI命令,右边是SST25VF016B的数据表。

什么都没有排队!

3.png

亚马逊Dash的spi flash

我设法利用SPI flash来连接多个dash的 micro M25P16芯片。
0x202015是M25P16在被要求总线识别时返回的魔幻JEDEC号码。

4.png


原文请见hackaday

收藏 评论3 发布时间:2018-11-1 10:36

举报

3个回答
tanic 回答时间:2018-11-1 13:42:27
没看懂到底要做什么?写小说吗
maxtch 回答时间:2018-11-1 23:26:43
能不能把来源贴出来?这个看上去像是机器翻译的,看不懂啊。有来源连接的话我还至少能直接看原文。
tanic 回答时间:2018-11-2 10:24:50
maxtch 发表于 2018-11-1 23:26
能不能把来源贴出来?这个看上去像是机器翻译的,看不懂啊。有来源连接的话我还至少能直接看原文。 ...

老哥有经验,我就说语气咋怪怪的

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版