Auteur : Younix.Zhang
Répertoire d'articles
demande
Le fournisseur du module 5G a déclaré qu'il prend en charge la fonction d'appel (le module a une sortie PCM), mais il n'y a pas de solution de codec correspondante, nous devons donc utiliser le codec pour accepter l'audio PCM
conception matérielle
débogage
Le débogage est divisé en deux parties
- Passer et recevoir des appels via les commandes AT. Ceci est standard.
- Configurez le registre du codec via la commande AT. Ceci est une propriété privée de Huawei.
Test de commande AT
Connectez l'interface USB de l'ordinateur hôte (Ubuntu16.04) et le module Huawei 5000-31.
ls /dev/ttyUSB*
peut être vu
ttyUSB0 ttyUSB1 ttyUSB2 ttyUSB3
Selon le manuel de Huawei, la commande AT interagit via le port PCUI, qui est ttyUSB1.
Alors j'ai passé
cat /dev/ttyUSB1
Surveiller l'acceptation des commandes AT.
par
echo "ATI" > /dev/ttyUSB1
Envoyez des commandes AT.
# 发送查询模组信息命令
echo "ATI" >/dev/ttyUSB1
# 查看模组返回信息
Manufacturer: Huawei Technologies Co., Ltd.
Model: MH5000-31
Revision: 11.770.00.03.00
IMEI: 867395040011807
+GCAP: +CGSM,+DS,+ES
1. Débogage de la fonction téléphonique
La numérotation téléphonique, la réponse et les autres fonctions sont les mêmes que les commandes AT standard
# 拨号
echo "ATD13212341234;" >/dev/ttyUSB1
# 接听
echo "ATA" > /dev/ttyUSB1
# 挂断: 0 为所有用户
echo "ATH0" > /dev/ttyUSB1
2. Débogage de la fonction audio
Regardez d'abord les commandes liées au codec prises en charge par le module
AT^SETCODECREG=<codec_addr>,<register_addr>,<register_data>
AT^GETCODECREG=<codec_addr>,<register_addr>
Regardez le tableau des registres du Codec NAU88C10 et trouvez-en un
Problème 1
Voici le problème: le module 5000-31 ne peut prendre en charge que 1 octet, soit 8 bits, pour lire et écrire dans le registre Codec.
Mais les données de registre de Codec sont de 9 bits (0-8) .
Examinez de plus près l'opération d'écriture i2c de Codec:
On peut voir que register_addr est A6-A0, et register_data est D8-D0,
donc nous devons seulement décaler le bit d'adresse de registre que nous voulons vraiment opérer vers la gauche de 1 bit, plus D8, comme register_addr au module 5000-31 à appeler.
Par exemple:
je veux écrire 0x01 et écrire 0x11f = 1 0001 1111.
Ensuite, les paramètres que mon module actuel devrait utiliser sont
<codec_addr> = 1a,
<register_addr> = 01 décalé à gauche de 1 bit à 02, et D8 est 1, et enfin obtenir 3
<register_data> = D7-D0 est 1f.
La commande AT correspondante est
AT^SETCODECREG=1a,3,1f
Voici un autre ensemble de données
[8810/Audio Control]
0x4 = 0x58
0x5 = 0x0
0x6 = 0x0
0x7 = 0xa
0xa = 0x8
0xb = 0xff
0xe = 0x100
0xf = 0xff
La commande AT correspondante est
echo "at^setcodecreg=1a,8,58" > /dev/ttyUSB1
echo "at^setcodecreg=1a,a,00" > /dev/ttyUSB1
echo "at^setcodecreg=1a,c,0" > /dev/ttyUSB1
echo "at^setcodecreg=1a,e,0a" > /dev/ttyUSB1
echo "at^setcodecreg=1a,14,08" > /dev/ttyUSB1
echo "at^setcodecreg=1a,16,ff" > /dev/ttyUSB1
echo "at^setcodecreg=1a,1d,00" > /dev/ttyUSB1
echo "at^setcodecreg=1a,1e,ff" > /dev/ttyUSB1
Problème 2
Je ne sais pas si l'écriture a réussi. Parce que la lecture du module 5000-31 est également de 1 octet, et lorsque le codec est lu, il renvoie 2 octets.
Parce que nous pouvons voir sur la fiche technique
Le premier octet renvoyé par Codec est le bit haut.
Ainsi, les données de retour obtenues par la commande AT GETCODECREG sont les 1 octets de poids fort.
Il n'y a aucun moyen, vous ne pouvez utiliser qu'un analyseur logique pour capturer des données I2C. Vérifiez si l'écriture réelle est réussie.
De manière générale, si la commande AT renvoie OK, l'écriture doit être réussie.
Problème 3 Problème de configuration du registre du codec
Le tableau de configuration des registres donné par Codec FAE étant incorrect, il n'y a pas de son dans le micro et le haut-parleur. J'ai été retardé dans ce domaine pendant presque une journée.
Il s'agit de la phase de débogage relativement indépendante du codec. Configurez chaque registre en fonction du canal. Plus maintenant.
Ceux qui sont intéressés par la consultation de la configuration du registre du 88C10 peuvent communiquer dans les commentaires.