Jelajahi Sumber

add:es7243e录音demo

sunzhipeng 2 tahun lalu
induk
melakukan
e7ce5ce712
3 mengubah file dengan 98 tambahan dan 4 penghapusan
  1. 91 0
      demo/record/EC618/es7243e.lua
  2. 4 4
      demo/record/EC618/es8218e.lua
  3. 3 0
      demo/record/EC618/main.lua

+ 91 - 0
demo/record/EC618/es7243e.lua

@@ -0,0 +1,91 @@
+-- es7243e器件地址
+local es7243e_address = 0x10
+
+-- es7243e初始化寄存器配置
+local es7243e_reg = {
+    {0x01, 0x3A},
+	{0x00, 0x80},
+	{0xF9, 0x00},
+	{0x04, 0x02},
+	{0x04, 0x01},
+	{0xF9, 0x01},
+	{0x00, 0x1E},
+	{0x01, 0x00},
+	--radio 256
+	{0x03, 0x20},
+	{0x04, 0x01},
+	{0x0D, 0},
+	{0x05, 0x00},
+	{0x06, 4 - 1},
+	{0x07, 0x00},
+	{0x08, 0xFF},
+	
+	{0x02, (0x00 << 7) + 0},
+	{0x09, 0xCA},
+	{0x0A, 0x85},
+	{0x0B, 0xC0 + 0x00 + (0x03 << 2)},
+	{0x0E, 191},
+	{0x10, 0x38},
+	{0x11, 0x16},
+	{0x14, 0x0C},
+	{0x15, 0x0C},
+	{0x17, 0x02},
+	{0x18, 0x26},
+	{0x0F, 0x80},
+	{0x19, 0x77},
+	{0x1F, 0x08 + (0 << 5) - 0x00},
+	{0x1A, 0xF4},
+	{0x1B, 0x66},
+	{0x1C, 0x44},
+	{0x1E, 0x00},
+	{0x20, 0x10 + 14},
+	{0x21, 0x10 + 14},
+	{0x00, 0x80 + (0 << 6)},
+	{0x01, 0x3A},
+	{0x16, 0x3F},
+	{0x16, 0x00},
+	{0x0B, 0x00 + (0x03 << 2)},
+	{0x00, (0x80) + (1 << 6)},
+}
+
+-- i2s数据接收buffer
+local rx_buff = zbuff.create(3200)
+
+-- amr数据存放buffer,尽可能地给大一些
+local amr_buff = zbuff.create(10240)
+
+--创建一个amr的encoder
+local encoder = codec.create(codec.AMR, false)
+
+-- i2s数据接收回调
+local function record_cb(id, buff)
+    if buff then
+        log.info("I2S", id, "接收了", rx_buff:used())
+        codec.encode(encoder, rx_buff, amr_buff)                -- 对录音数据进行amr编码,成功的话这个接口会返回true
+    end
+end
+
+
+
+local function record_task()
+    sys.wait(5000)
+    uart.setup(1, 115200)                                       -- 开启串口1
+    log.info("i2c initial",i2c.setup(0, i2c.FAST))              -- 开启i2c
+    i2s.setup(0, 0, 8000, 16, 1, i2s.MODE_I2S)                  -- 开启i2s
+    i2s.on(0, record_cb)                                        -- 注册i2s接收回调
+    i2s.recv(0, rx_buff, 3200)
+    sys.wait(300)
+    for i, v in pairs(es7243e_reg) do                           -- 初始化es7243e
+        i2c.send(0,es7243e_address,v,1)
+    end
+    sys.wait(5000)
+    i2c.send(0, es7243e_address,{0x00, (0x80) + (0 << 6)},1)    -- 停止录音
+    i2s.stop(0)                                                 -- 停止接收
+
+    log.info("录音5秒结束")
+    uart.write(1, "#!AMR\n")                                    -- 向串口发送amr文件标识数据
+    sys.wait(5)                                                 -- 等待5ms确保发送成功
+    uart.write(1, amr_buff:query())                             -- 向串口发送编码后的amr数据
+end
+pm.power(pm.DAC_EN, true)                                       -- 打开es7243e芯片供电
+sys.taskInit(record_task)

+ 4 - 4
demo/record/EC618/es8218e.lua

@@ -1,7 +1,7 @@
--- es8128e器件地址
+-- es8218e器件地址
 local es8218e_address = 0x10
 local es8218e_address = 0x10
 
 
--- es8128e初始化寄存器配置
+-- es8218e初始化寄存器配置
 local es8218e_reg = {
 local es8218e_reg = {
     {0x00, 0x00},
     {0x00, 0x00},
     {0x01, 0x2F + (0 << 7)},
     {0x01, 0x2F + (0 << 7)},
@@ -57,7 +57,7 @@ local function record_task()
     i2s.on(0, record_cb)                                        -- 注册i2s接收回调
     i2s.on(0, record_cb)                                        -- 注册i2s接收回调
     i2s.recv(0, rx_buff, 3200)
     i2s.recv(0, rx_buff, 3200)
     sys.wait(300)
     sys.wait(300)
-    for i, v in pairs(es8218e_reg) do                           -- 初始化es8128e
+    for i, v in pairs(es8218e_reg) do                           -- 初始化es8218e
         i2c.send(0,es8218e_address,v,1)
         i2c.send(0,es8218e_address,v,1)
     end
     end
     sys.wait(5000)
     sys.wait(5000)
@@ -69,5 +69,5 @@ local function record_task()
     sys.wait(5)                                                 -- 等待5ms确保发送成功
     sys.wait(5)                                                 -- 等待5ms确保发送成功
     uart.write(1, amr_buff:query())                             -- 向串口发送编码后的amr数据
     uart.write(1, amr_buff:query())                             -- 向串口发送编码后的amr数据
 end
 end
-pm.power(pm.DAC_EN, true)                                       -- 打开es8128e芯片供电
+pm.power(pm.DAC_EN, true)                                       -- 打开es8218e芯片供电
 sys.taskInit(record_task)
 sys.taskInit(record_task)

+ 3 - 0
demo/record/EC618/main.lua

@@ -12,4 +12,7 @@ require "es8311"
 -- es8218e 录音demo
 -- es8218e 录音demo
 -- require "es8218e"
 -- require "es8218e"
 
 
+-- es7243e 录音demo
+-- require "es7243e"
+
 sys.run()
 sys.run()