` 在一个精致的塑料盒中,除了比较抢眼的潘多拉之外就是那个定制的红外遥控器了。在正点原子其他的套件中也都有它的存在。这个小巧的遥控器除了音乐播放需要的几个按键就是数字键,或者说是九宫格的键盘了,上面还有字母符号。来看下真是面容
既然有了遥控器,实现隔空控制是没问题了。展开音乐播放的工程,可以看到很原子的风格。这里的音频功能实现依靠一颗ES8388编解码芯片。 该芯片内部集成了 24位高性能 DAC&ADC,可以播放最高 96K@24bit的音频信号。不仅如此,该芯片还 结合了立体声差分麦克风 放大器 、耳机 放大器 、 数字音效以及模拟混合和增益功能 ,减少 了应用时必需的外部组件,直接可以驱动耳机( 40mW)无需外加功放电路。该芯片采用 I2S与 MCU的 SAI接口连接( SAI支持 I2S),图中 SAI1_SD_B/SAI1_SD_A SAI1_FS_A/SAI1_SCK_A/SAI1_MCLK_A分别接在 MCU的: PE3/PE6/PE4/PE5/PE2上。IIC_SCL1和 IIC_SDA分别与 MCU的 PC0/PC1相连 。开发板很细心的将这部分的电源独立开来,在低功耗实现时能够关闭电源消耗。
- int main(void)
- {
- HAL_Init();
- SystemClock_Config(); //³õʼ»¯ÏµÍ³Ê±ÖÓΪ80M
- delay_init(80); //³õʼ»¯ÑÓʱº¯Êý 80MϵͳʱÖÓ
- uart_init(115200); //³õʼ»¯´®¿Ú£¬²¨ÌØÂÊΪ115200
- LED_Init(); //³õʼ»¯LED
- KEY_Init(); //³õʼ»¯°´¼ü
- LCD_Init(); //³õʼ»¯LCD
- W25QXX_Init(); //³õʼ»¯W25Q128
- my_mem_init(SRAM1); //³õʼ»¯ÄÚ²¿SRAM1ÄÚ´æ³Ø
- my_mem_init(SRAM2); //³õʼ»¯ÄÚ²¿SRAM2ÄÚ´æ³Ø
- ES8388_Init(); //ES8388³õʼ»¯
- ES8388_Set_Volume(22); //µ÷½Ú¶ú»úÒôÁ¿
- exfuns_init(); //ΪfatfsÏà¹Ø±äÁ¿ÉêÇëÄÚ´æ
- f_mount(fs[0], "0:", 1); //¹ÒÔØSD¿¨
- f_mount(fs[1], "1:", 1); //¹ÒÔØSPI FLASH.
- POINT_COLOR = RED;
- Display_ALIENTEK_LOGO(0, 0);
- while(font_init()) //¼ì²é×Ö¿â
- {
- LCD_ShowString(30, 100, 200, 16, 16, "Font Error!");
- delay_ms(200);
- LCD_Fill(30, 100, 240, 116, WHITE); //Çå³ýÏÔʾ
- delay_ms(200);
- }
- POINT_COLOR = BLUE;
- Show_Str(30, 90, 200, 24, (u8*)"Å˶àÀSTM32L4 IOT¿ª·¢°å", 16);
- Show_Str(30, 97, 200, 16, (u8*)"ÒôÀÖ²¥·ÅÆ÷ʵÑé", 16);
- Show_Str(30, 114, 200, 16, (u8*)"ÕýµãÔ×Ó@ALIENTEK", 16);
- Show_Str(30, 131, 200, 16, (u8*)"2018Äê10ÔÂ27ÈÕ", 16);
- Show_Str(30, 148, 200, 16, (u8*)"KEY0:NEXT KEY2:PREV", 16);
- Show_Str(30, 165, 200, 16, (u8*)"KEY_UP:PAUSE/PLAY", 16);
-
- Reception_Init();
- while(1)
- {
- audio_play();
- }
- }
复制代码
当然,也不得不说,这样的工程也很方便,外设独立性很高,需要什么添加什么就好了。对整合一个综合性的工程减小了不少工作量。这里就添加红外接收的处理函数。主要看下键码
- switch(key)
- {
- case 0:str="ERROR";break;
- case 162:str="POWER";break;
- case 98:str="UP";break;
- case 2:str="PLAY";break;
- case 226:str="ALIENTEK";break;
- case 194:str="RIGHT";break;
- case 34:str="LEFT";break;
- case 224:str="VOL-";break;
- case 168:str="DOWN";break;
- case 144:str="VOL+";break;
- case 104:str="1";break;
- case 152:str="2";break;
- case 176:str="3";break;
- case 48:str="4";break;
- case 24:str="5";break;
- case 122:str="6";break;
- case 16:str="7";break;
- case 56:str="8";break;
- case 90:str="9";break;
- case 66:str="0";break;
- case 82:str="DELETE";break;
- }
复制代码
这里和音乐播放的按键操作保持一致,只要播放/暂停,上一曲/下一曲即可。只需对194,34,2三个键码做相应动作即可。插入原代码的部分要尽量融合,如图
然后编译无错,就可以下载到开发板了,从逻辑上来说,应该是可以一部到位的。
看到屏幕按照预期显示了,按下遥控器的按键可以正确执行对应的动作。这样就在巨人的肩膀上摘了个苹果。感谢社区试用活动和原子的馈赠。
`
|