Здравствуйте!
У меня уже есть опыт изготовления аппаратных SHOUTcast MP3 радиоприемников, теперь мне хотелось бы изготовить беспроводной домофон с цифровым микрофоном TC100E (PDM, pulse density modulation), программным кодером MP3 на базе микроконтроллера и радио-трансивером со скоростью передачи данных до 200 кбит/сек.
То есть, на улице человек говорит в цифровой микрофон, данные поступают в микроконтроллер, перекодируются в MP3 (моно 32 кбит/сек), упаковываются в SHOUTcast протокол, передаются по радиоканалу в домашний модуль, там микроконтроллерам обрабатывается SHOUTcast, далее MP3 поток декодируется аппаратным MP3 декодером. Звуковой сигнал подается на динамик.
Подскажите, что можно почитать по кодированияю MP3 разговорного качества?
Decodes MPEG 1.0 & 2.0 audio layer III
(MP3: CBR, VBR, ABR); layers I & II
(MP1, MP2) optional; WAV (PCM + IMA
ADPCM)
радио трансивер поддеривает до 200 кбит/сек
Можно использовать WAV но какое получится качество ? канал нельзя занимать постоянно, потребуется оставлять окна для коммуникаций с другой аппаратурой. В случае MP3 при музыкальном качестве, мне нравится что окна могут быть до нескольких секунд. Использую буферную память 64 КБайта.
не проше... nRF24Z1
offers a transparent audio channel with capacity of up to 1.54 Mbit/s,
У меня скорость передачи до 200 кбит/сек.
Вот новая информация по проекту:
Пробую использовать WAV формат для двунаправленной передачи голоса 8бит, 11000, моно, то есть, 90 кбит/сек на прием, так же 90 кбит/сек на передачу. Использую трансивер CC1101 (FSK-трансивер, до 1ГГц, SPI, 2.0 - 3.6V, RX 3...21mA -110dBm, TX 45mA +14dBm, до 200Кбит/с).
Как понимаю, скорость переключения трансивера прием/передача отражена этим параметром - RX/TX turnaround 40 μs. плюс некоторая погрешность совместной работы двух трансиверов. не будет ли звук прерывистым?
Беру кварц на 2 МГц (спецификация тактового сигнала цифрового микрофона 1...3 МГц). С выхода кварцевого генератора тактирую цифровой микрофон.
Сигнал кварцевого генератора поступает на модуль PLL МК PIC18 и частота умножается на четыре для нормальной работы МК (тактовая частота 8 МГц).
Преобразовываю PDM -> PCM с помощью TMR3 работающего в роли счетчика (для данного случая 8-битного, использую 8-битную оцифровку звукового сигнала). TMR1 использую в роли таймера, отсчитывающего 256 тактов частоты задающего генератора и выдающий аппаратное прерывание.
По событию прерывания от TMR1 считывается значение TMR3 и заносится в ячейку последовательной буферной памяти. TMR3 сбрасывается. TMR1 активируется и все по новой.
TMR3 конфигурируется на инкремент по входу RC0 (данные цифрового микрофона).
TMR1 конфигурируется на инкремент по тактовой частоте делитель/4 (2 МГц) как и тактирующий сигнал цифрового микрофона.
Суть идеи, подсчитывать количество ответных импульсов микрофона за 256 тактов микрофона. 0 импульсов микрофона преобразуется в 0 значение кода PCM, то есть, минимум звуковой синусоиды в коде PCM. 128 импульсов микрофона преобразуется в 125 значение кода PCM, то есть, середина звуковой синусоиды в коде PCM.
256 импульсов микрофона преобразуется в 255 значение кода PCM, то есть, максимум звуковой синусоиды в коде PCM.
Каждое новое значение PCM запишется в новую ячейку SPI SRAM памяти на тактовой частоте FOSC/4 .
Правильный ли у меня ход мысли? Какая будет критика?
В SRAM желательно писать PCM код согласно спецификации WAV (Render 11 025 Hz; 8-bit; Mono PCM audio wave) с частотой 11025 Hz, но о таком преобразовании с частоты 2 МГц/256 = 7812,5 Гц пока еще думаю.
Выход из положения, необходимо взять кварц на 2.822400 МГц. Если конечно моя парадигма преобразования верна.