TA的每日心情 | 奋斗 2014-2-9 10:11 |
---|
签到天数: 16 天 连续签到: 1 天 [LV.4]偶尔看看III
|
本帖最后由 ETRH Studio 于 2016-1-9 23:49 编辑
集合ALTERA FPGA, 蓝牙 4.0 BLE, 环境传感器, 与智能手机应用的开发套件Odyssey 分3大部分,
电池部分,蓝牙部分,FPGA部分, 蓝牙设计框图如下
通过I2C和SPI进行通信,其中I2C通信主要是进行数据通信,SPI与蓝牙部分通信以及accelerometer数据采集。整个系统设计还是比较庞大的,而FPGA仅仅实现一个小系统,通过I2C 与蓝牙模块通信,进而可以用APP进行控制。
相对于蓝牙部分,FPGA的功能相当简单,I2C传输数据,FPGA采集数据,采集则用MAX10特色的多路ADC,设计原理可由代码看出
Description | Demonstrate ADC reading analog inputs including microphone
// |
// | I2C Register Map:
// | Base = 0x30 (Wr base: 0x60, Rd base: 0x61)
// | 00: AutoReg
// | The auto reg is driven by HW and polled by software for indicator control
// | indicator1 = button 1 active, autoreg --> 0x55
// | indicator2 = button 2 active, autoreg --> 0xaa
// | 01: ADC start/stop
// | [7:1] unused
// | [0] 1 = start, 0 = stop
// | 02: Channel 0 ADC voltage (upper)
// | 12-bit analog data, in mV
// | [7:4] unused
// | [3:0] Channel 0 ADC voltage (bits 9-12)
// | 03: Channel 0 ADC voltage (lower)
// | 12-bit analog data, in mV
// | [7:0] Channel 0 ADC voltage (bits 1-8)
// | 04: Channel 1 ADC voltage (upper)
// | 12-bit analog data, in mV
// | [7:4] unused
// | [3:0] Channel 1 ADC voltage (bits 9-12)
// | 05: Channel 1 ADC voltage (lower)
// | 12-bit analog data, in mV
// | [7:0] Ch 1 ADC voltage (bits 1-8)
// | 06: Channel 2 ADC voltage (upper)
// | 12-bit analog data, in mV
// | [7:4] unused
// | [3:0] Channel 2 ADC voltage (bits 9-12)
// | 07: Channel 2 ADC voltage (lower)
// | 12-bit analog data, in mV
// | [7:0] Ch 2 ADC voltage (bits 1-8)
// | 08: Channel 3 ADC voltage (upper)
// | 12-bit analog data, in mV
// | [7:4] unused
// | [3:0] Channel 3 ADC voltage (bits 9-12)
// | 09: Channel 3 ADC voltage (lower)
// | 12-bit analog data, in mV
// | [7:0] Channel 3 ADC voltage (bits 1-8)
// | 0a: Channel 4 ADC voltage (upper)
// | 12-bit analog data, in mV
// | [7:4] unused
// | [3:0] Channel 4 ADC voltage (bits 9-12)
// | 0b: Channel 4 ADC voltage (lower)
// | 12-bit analog data, in mV
// | [7:0] Channel 4 ADC voltage (bits 1-8)
// | 0c: Channel 5 ADC voltage (upper)
// | 12-bit analog data, in mV
// | [7:4] unused
// | [3:0] Channel 5 ADC voltage (bits 9-12)
// | 0d: Channel 5 ADC voltage (lower)
// | 12-bit analog data, in mV
// | [7:0] Channel 5 ADC voltage (bits 1-8)
// | 0e: Microphone ADC voltage (upper)
// | 12-bit analog data, in mV
// | [7:4] unused
// | [3:0] Microphone ADC voltage (bits 9-12)
// | 0f: Microphone ADC voltage (lower)
// | 12-bit analog data, in mV
// | [7:0] Microphone ADC voltage (bits 1-8)
// | 10: Microphone max ADC voltage (upper)
// | 12-bit analog data, in mV
// | [7:4] unused
// | [3:0] Microphone max ADC voltage (bits 9-12)
// | 11: Microphone max ADC voltage (lower)
// | 12-bit analog data, in mV
// | [7:0] Microphone max ADC voltage (bits 1-8)
由代码可以看出 MAX10 I2C作为slave,通过32 BIT MCU 进行I2C读取,送给蓝牙。
再次通过蓝牙,开关机几次才连接上,测了下其他的数据
结果额
温度如下,在深圳,晚上10点多,
下面是心率的,数据不可做参考
从代码中,看到有一个mic的程序
如下
assign OUT_LED[7:0] = ~((microphone_max > 12'hA0D) ? 8'hff :
(microphone_max > 12'h858) ? 8'h7f :
(microphone_max > 12'h77E) ? 8'h3f :
(microphone_max > 12'h711) ? 8'h1f :
(microphone_max > 12'h6DA) ? 8'h0f :
(microphone_max > 12'h6BF) ? 8'h07 :
(microphone_max > 12'h6B1) ? 8'h03 :
8'h01);
通过mic ADC采集数据,然后LED显示声音大小
http://player.youku.com/player.php/sid/XMTQ0MDU4OTQ2MA==/v.swf
最后奉上一个流水灯,完美结束
http://player.youku.com/player.php/sid/XMTQ0MDYwMjgzNg==/v.swf
|
|