audio_config.lua 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. function audio_init()
  2. pm.ioVol(pm.IOVOL_ALL_GPIO, 3300)
  3. -- local multimedia_id = 0
  4. -- local i2s_id = 0
  5. -- local i2s_mode = 0
  6. -- local i2s_sample_rate = 16000
  7. -- local i2s_bits_per_sample = 16
  8. -- local i2s_channel_format = i2s.MONO_R
  9. -- local i2s_communication_format = i2s.MODE_LSB
  10. -- local i2s_channel_bits = 16
  11. -- --air8000 core开发版+音频小板配置
  12. -- local voice_vol = 60 --音频小板喇叭太容易失真了,不能太大
  13. -- local i2c_id = 0
  14. -- local pa_pin = 162 -- 喇叭pa功放脚
  15. -- local pa_on_level = 1
  16. -- local pa_delay = 200
  17. -- local dac_power_pin = 164
  18. -- local dac_power_on_level = 1
  19. -- local dac_power_off_delay = 600
  20. -- gpio.setup(24, 1) --air8000的I2C0需要拉高gpio24才能用
  21. -- gpio.setup(26, 0)
  22. -- i2c.setup(0, i2c.FAST)
  23. -- gpio.setup(24, 1, gpio.PULLUP) -- i2c工作的电压域
  24. -- sys.wait(100)
  25. -- gpio.setup(dac_power_pin, 1, gpio.PULLUP) -- 打开音频编解码供电
  26. -- gpio.setup(pa_pin, 1, gpio.PULLUP) -- 打开音频放大器
  27. -- audio.on(0, audio_callback)
  28. -- i2s.setup(i2s_id, i2s_mode, i2s_sample_rate, i2s_bits_per_sample, i2s_channel_format, i2s_communication_format,i2s_channel_bits)
  29. -- audio.config(multimedia_id, pa_pin, pa_on_level, 0, pa_delay, dac_power_pin, dac_power_on_level, dac_power_off_delay)
  30. -- audio.setBus(multimedia_id, audio.BUS_I2S,{chip = "es8311",i2cid = i2c_id , i2sid = i2s_id}) --通道0的硬件输出通道设置为I2S
  31. -- audio.vol(multimedia_id, voice_vol)
  32. -- audio.micVol(multimedia_id, 75)
  33. local multimedia_id = 0
  34. local i2c_id = 0 -- i2c_id 0
  35. local pa_pin = gpio.AUDIOPA_EN -- 喇叭pa功放脚
  36. local power_pin = 20 -- es8311电源脚
  37. local i2s_id = 0 -- i2s_id 0
  38. local i2s_mode = 0 -- i2s模式 0 主机 1 从机
  39. local i2s_sample_rate = 16000 -- 采样率
  40. local i2s_bits_per_sample = 16 -- 数据位数
  41. local i2s_channel_format = i2s.MONO_R -- 声道, 0 左声道, 1 右声道, 2 立体声
  42. local i2s_communication_format = i2s.MODE_LSB -- 格式, 可选MODE_I2S, MODE_LSB, MODE_MSB
  43. local i2s_channel_bits = 16 -- 声道的BCLK数量
  44. local multimedia_id = 0 -- 音频通道 0
  45. local pa_on_level = 1 -- PA打开电平 1 高电平 0 低电平
  46. local power_delay = 3 -- 在DAC启动前插入的冗余时间,单位100ms
  47. local pa_delay = 100 -- 在DAC启动后,延迟多长时间打开PA,单位1ms
  48. local power_on_level = 1 -- 电源控制IO的电平,默认拉高
  49. local power_time_delay = 100 -- 音频播放完毕时,PA与DAC关闭的时间间隔,单位1ms
  50. local voice_vol = 70 -- 喇叭音量
  51. local mic_vol = 80 -- 麦克风音量
  52. gpio.setup(power_pin, 1, gpio.PULLUP)
  53. gpio.setup(pa_pin, 1, gpio.PULLUP)
  54. sys.wait(200)
  55. i2c.setup(i2c_id, i2c.FAST) -- 设置i2c
  56. i2s.setup(i2s_id, i2s_mode, i2s_sample_rate, i2s_bits_per_sample, i2s_channel_format, i2s_communication_format,
  57. i2s_channel_bits) -- 设置i2s
  58. audio.config(multimedia_id, pa_pin, pa_on_level, power_delay, pa_delay, power_pin, power_on_level, power_time_delay)
  59. audio.setBus(multimedia_id, audio.BUS_I2S, {
  60. chip = "es8311",
  61. i2cid = i2c_id,
  62. i2sid = i2s_id,
  63. }) -- 通道0的硬件输出通道设置为I2S
  64. audio.vol(multimedia_id, voice_vol)
  65. audio.micVol(multimedia_id, mic_vol)
  66. end