Améliorations prévues pour la prochaine version
Identification des ports réseau IP175GH
Pin 37 LINK_LED0 (J1) : Haut à 3,3V sans câble réseau, bas avec câble connecté.
Pin 36 LINK_LED0 (J2) : Haut à 3,3V sans câble réseau, bas avec câble connecté.
Correction de l'inversion de lignes 485 sur CW32L083
Changement de matériel pour l'écran de 0,96 pouce
Lien vers l'écran de 0,96 pouce
Présentation des schémas et terminologie
| N° | Élément | Description |
|---|---|---|
| 1 | SMS | Service de messagerie courte (Short Messaging Service), premier service de messages textuels. |
| 2 | lwIP | Pile logicielle de protocole réseau. |
| 3 | CNMP | Norme réseau cellulaire. |
| 4 | BSC | Contrôleur de station de base (Base Station Controller), gère 70 à 80 stations de base (BTS). |
| 5 | LAC | Code de zone de localisation (Location Area Code), utilisé pour la recherche dans les réseaux mobiles. |
| 6 | CI | Identifiant du secteur d'une antenne sur une station de base. Les numéros CI sous une même station sont séquentiels (par ex. 1,2,3). |
| 7 | - | Sur certaines tours, des antennes GSM et CDMA sont installées simultanément. |
| 8 | GSM | Système mondial de communication mobile (Global System for Mobile Communications), basé sur l'accès multiple par répartition dans le temps (TDMA). |
| 9 | CDMA | Accès multiple par répartition de code (Code Division Multiple Access). |
| 10 | CDMA | Technologie permettant à plusieurs utilisateurs de communiquer simultanément sur la même fréquence via des codes uniques. Elle améliore la robustesse contre les interférences en élargissant le spectre du signal. |
Configuration du module A7670C-LANS
Référence documentaire : A76xx_R3_Series_OpenSDK_Software_User_Guide_V1.04.pdf
Identifiants et versions
| N° | Composant | Détails |
|---|---|---|
| 1 | A7670C | P/N: S2-10CWL-Z32LS ; SN: MP062503715CB08 ; IMEI: 868484070898587 ; Logiciel: 22110B03A7670M6A |
| 2 | A7670C | La puce ASR 1603 correspond à la révision R2, ASR 1606 à R3, ASR 1602 à R5. Le numéro PN interne permet d'identifier la plateforme et la révision. |
| 3 | A7670C | Les versions V701 et V702 ont des P/N différents. V702 : S2-10CWL (puce actuelle) |
| 4 | A7670C | A7670C-LANS utilise la plateforme 1606. A7670C-LNXY (plateforme 1605) ne supporte pas le développement secondaire. |
| 5 | A7670C | Commande de compilation : make A7670C_LANS_1606_V702_OPENSDK |
| 6 | A7670C | Fichier GPIO : A7670C_MANS_LANS_GPIO.h. La broche 48 (GPIO8) a pour valeur 77. Pour l'utiliser dans l'interface utilisateur, entrer le paramètre 77. |
Ports série
PrintfResp Sortie sur le port série 1.
sAPI_UartWrite Sortie via un port série configuré.
sAPI_Debug Sortie vers CatStudio.
sAPI_UsbVcomWrite Sortie via le port AT virtuel USB (port 9011).
Processus de configuration et de compilation
Fichier de configuration Kconfig
config HAS_DEMO
bool "BUILD SIMCOM DEMO"
default y
Génération du fichier .config
CONFIG_HAS_DEMO=y
Fichier buildOptions.cmake
if(CONFIG_HAS_DEMO AND ((CONFIG_SIMCOM_PROTOCOL_V1 AND EXISTS ${CMAKE_SOURCE_DIR}/sc_demo/V1) OR (CONFIG_SIMCOM_PROTOCOL_V2 AND EXISTS ${CMAKE_SOURCE_DIR}/sc_demo/V2)))
option(HAS_DEMO "build simcom demo" ON)
endif()
Fichier CMakeLists.txt
if(HAS_DEMO)
if(DEFINED CQAPI)
add_subdirectory(./sc_demo/CQ cq_demo)
else()
if(CONFIG_SIMCOM_PROTOCOL_V1)
add_subdirectory(./sc_demo/V1 sc_demo)
elseif(CONFIG_SIMCOM_PROTOCOL_V2)
add_subdirectory(./sc_demo/V2 sc_demo)
endif()
endif()
endif(HAS_DEMO)
Configuration sous Windows via .config
Configuration sous Windows avec make menuconfig
Prérequis : Installation de Python.
Configuration sous Windows avec make guiconfig
Compilation sous Windows
1. Configuration de l'outil
L'outil make peut être gnumake ou ninja. Par défaut, Windows utilise ninja, Linux utilise make.
Ajouter le chemin tools/win32 au PATH système,
ou copier GNUmake.exe dans C:\windows et le renommer en make.exe (si nécessaire).
2. Compilation
make A7670C_LANS_1606_V702_OPENSDK
Pour compiler la cible, exécuter à la racine : make/gnumake A7670C_LANS
Pour nettoyer un module : make/gnumake clean_ A7670C_LANS
Pour nettoyer tous les modules : make/gnumake clean
3. Le répertoire de sortie A7670C_LANS_1606_V702_OPENSDK sera généré dans le dossier out.
Programmation du firmware (aboot.exe)
Chemin de l'outil : D:\LH_Tools\aboot-tools-2020.10.15-win-x64\aboot.exe
Connecter un câble USB prolongateur à J4. Lancer aboot.exe et sélectionner le fichier à programmer (voir Figure 1). Alimenter le module pour déclencher la mise à jour (voir Figure 2).
Pendant le développeemnt, s'assurer que l'alimentation du module 5G est active.
Ajout de fichiers à la compilation
Pour ajouter une démo : insérer demo_Lh_gps.c dans CmakeLists.txt. Les fichiers d'en-tête (.h) ne nécessitent pas d'ajout explicite.
cmake_minimum_required(VERSION 3.10)
AUX_SOURCE_DIRECTORY(./src/token source_files)
AUX_SOURCE_DIRECTORY(./src/utils source_files)
list(APPEND source_files ./src/simcom_demo.c)
list(APPEND source_files ./src/demo_helloworld.c)
list(APPEND source_files ./src/demo_Lh_gps.c)
Création de paquets de mise à jour (FOTA)
En général, seule l'application (APP) est mise à jour. La mise à jour FOTA complète est nécessaire uniquement si le SDK est modifié. Les mises à jour APP peuvent être transversales, mais pas les mises à jour FOTA.
Mise à jour APP
Mise à jour FOTA du kernel
Processus :
1. Renommer l'image système actuelle en system_old.img
2. Renommer l'image système cible en system_new.img
3. Placer adiff.exe, system_old.img et system_new.img dans le même répertoire (inclure updater.bin si la version actuelle n'a pas de partition updater)
Paramètres de l'outil adiff.exe :
adiff.exe : Outil de création de paquets différentiels
system_old.img : Version originale
system_new.img : Version cible
system_patch.bin : Nom du paquet généré
updater.bin : Fichier de démarrage de mise à jour
-m : Différence système minimale
-p : Différence système complète
-u : Support pour les systèmes sans partition updater
Pour 1602&1606, version complète, sans partition updater :
adiff.exe system_old.img system_new.img system_patch.bin -m -u updater.bin
Pour 1602&1606, version complète, avec partition updater :
adiff.exe system_old.img system_new.img system_patch.bin -m
Mise à jour FOTA du kernel et de l'application simultanément
Étape 1 : Déterminer si updater.bin est nécessaire
Utiliser l'outil aboot pour inspecter le paquet de la version actuelle et vérifier l'existence de la partition updater.
Étape 2 : Vérifier l'état "Current minisys enable.enable 0 stage 0"
Menu de test FOTA :
1. FTP fota 2. HTTP fota 8. Check Current mini sys Status 99. back
État actuel : Current minisys enable.enable 0 stage 0
Étape 3 : Préparation des fichiers
1. system_old.img (version actuelle)
2. system_new.img (version cible)
3. customer_app_old.bin (application actuelle)
4. customer_app_new.bin (application cible)
5. Placer tous les fichiers nécessaires (inclure updater.bin si absent) dans un même dossier.
Notes :
- Chemin de updater.bin : D:\LH_Project\SIMcom\22124B01V06A7670M6A_SDK_240809\SIMCOM_SDK_SET\kernel\A7670C_LANS_1606_V702_OPENSDK\aboot\images\updater.bin
- system.img se trouve dans burn.zip généré lors de la compilation.
- Utiliser adiff.exe de 243 Ko pour une génération valide.
Étape 4 : Génération de system_patch.bin (pour stage 0)
Exemple de commande (pour 1602&1606, sans partition updater) :
adiff.exe system_old.img system_new.img system_patch.bin -m -a1 customer_app customer_app_new.bin -u updater.bin
Ouvrir une invite de commandes en tant qu'administrateur (CMD, pas PowerShell).
Commandes :
D:
cd LH_Project\SIMcom\22124B01V06A7670M6A_SDK_240809\Doc\software\FOTA\old\new_tool_doc_2025-10-15
Étape 5 : Exécution complète
Exemple de sortie après exécution de adiff.exe avec les paramètres spécifiés, détaillant le processus de génération du paquet différentiel.
Consommation énergétique et modes basse consommation
Configuration du mode veille
Le module A76XX doit être inactif (pas de transfert de données, pas de lecture audio, GPS éteint, etc.) pour pouvoir entrer en mode veille.
sAPI_SystemSleepSet
Cette API contrôle l'activation/désactivation de la veille système.
sAPI_SystemSleepExSet
Cette API permet une entrée rapide en veille en libérant la connexion RRC après un délai spécifié sans activité de données.
sAPI_SystemAlarmClock2Wakeup (Réveil programmé)
Cette API programme un réveil après un délai spécifié. Le module entre en veille et se réveille automatiquement sans appel supplémentaire à SystemSleepSet.
Conditions pour les ports série
Conditions pour le port USB
Le port USB doit être déconnecté avant l'entrée en veille. Une connexion USB réveillera le module.
Débogage des problèmes de veille
Si l'appel à sAPI_SystemSleepSet(SC_SYSTEM_SLEEP_ENABLE) ne met pas le module en veille, vérifier :
1. Le GPS n'est pas éteint (vérifier le niveau de la broche de contrôle d'alimentation GPS).
2. Le port USB est toujours connecté (vérifier la broche USB VBAT).
3. Les fuites de courant dans le circuit matériel.
4. Les interruptions continues sur une broche.
Exemple d'utilisation : Acquisition positionnelle GPS/Beidou et stations de base (rapport toutes les 6 secondes)
Consommation de la puce 485 sur MS2005-Lite
La puce 485 sur la version MS2005-Lite consomme environ 13mA.
Points importants
Les chemins d'accès aux fichiers ne doivent pas contenir de caractères chinois.
Microcontrôleur CW32L083 de Wuhan Xinyuan
Protocole de données (propriétaire)
| 1 octet | 1 octet | 1 octet | 1 octet | 1 octet | 4 octets | 2 octets | 2 octets | N octets | 1 octet |
|---|---|---|---|---|---|---|---|---|---|
| 0x55 | sum (somme de contrôle) | dire (direction) | pump (pompe) | type | seqId (numéro de séquence) | fucId (ID fonction) | len (longueur des données) | Data | 0xAA |
typedef struct {
unsigned char sum;
unsigned char dire;
unsigned char pump;
unsigned char type;
unsigned int seqId;
unsigned short fucId;
unsigned short len;
} FrameHead;
typedef struct {
FrameHead head;
unsigned char data[FRAME_DSIZE];
} StdFrame;
Programmation en série du CW32L083RCS6
Description
Le CW32L083 est livré avec un bootloader d'usine préprogrammé dans la zone mémoire système (System Memory), inaccessible en écriture. Pour entrer en mode ISP, il faut forcer la broche BOOT0 au niveau haut lors du reset.
Programmation via l'outil CW-Writer
Le CW32L083 utilise son bootloader intégré.
Mise à jour via ymodem_tool.exe (Non supporté actuellement)
Cette méthode nécessite un bootloader personnalisé (IAP) supportant le protocole YMODEM. L'outil ymodem_tool.exe de Wuhan Xinyuan permet de transférer des firmwares via le port série. Connexion via adaptateur USB vers TTL (GND-GND, RX-SWCLK, TX-SWDIO). Court-circuiter les deux broches à côté de la LED avant l'alimentation, puis lancer la mise à jour.
Chemin de l'outil : D:\LH_Tools\Release\ymodem_tool.exe
Mode ISP (Non fonctionnel actuellement)
Flux de travail du mode ISP
Format de données
Indicateurs de réponse
Exemple de données envoyées/reçues
Connexion physique
Problèmes identifiés
Activation de l'interruption par bouton empêchant le démarrage après mise sous tension
// Exemple de code problématique
// NVIC_SetPriority(GPIOC_GPIOD_IRQn, 5);
// NVIC_EnableIRQ(GPIOC_GPIOD_IRQn); // Empêche le démarrage normal
Blocage lors de l'activation de l'interruption d'émission UART5
// Code correct : Gestion de plusieurs UART dans une même routine d'interruption
void UART2_UART5_IRQHandler(void) {
Lh_UART2_IRQHandler();
Lh_UART5_IRQHandler();
}
// Code incorrect : Risque de blocage si plusieurs UART déclenchent simultanément
void UART3_UART6_IRQHandler(void) {
if(Lh_UART3_IRQHandler()==1) { return; }
if(Lh_UART6_IRQHandler()==1) { return; }
}
Outil PCtoLCD2002 Perfect Edition
Capteur analogique AFE5160 à 8 canaux de 3PEAK
Définition des broches
Correspondance des canaux AFE5160/AFE5161
| Canal AFE5160 | Canal AFE5161 | Usage |
|---|---|---|
| CH5 | CH3 | Capteur de niveau de carburant |
| CH6 | CH4 | Capteur de pression d'huile hydraulique |
Exemples de données acquises
CH3 : ch5 = 0x11A1, 0x35E8, 0x52C7
CH4 : ch6 = 0x11AC, 0x35ED, 0x528E
Sortie de données double ligne
Exemple de code pour AFE5161
void AFE5161_ReadData(TPAFE51* sensor) {
uint16_t vals[8] = {0};
CS_LOW();
CONVSTA_HIGH();
CONVSTB_HIGH();
Delay_us(1);
for (int bit = 15; bit >= 0; bit--) {
SCK_HIGH();
Delay_us(1);
vals[0] |= (ReadDOUTA() << bit);
vals[4] |= (ReadDOUTB() << bit);
SCK_LOW();
Delay_us(1);
}
for (int bit = 15; bit >= 0; bit--) {
SCK_HIGH();
Delay_us(1);
vals[1] |= (ReadDOUTA() << bit);
vals[5] |= (ReadDOUTB() << bit);
SCK_LOW();
Delay_us(1);
}
// ... Répéter pour les canaux 3,4,7,8 ...
CS_HIGH();
CONVSTA_LOW();
CONVSTB_LOW();
for(int i=0; i<8; i++) {
sensor->channel[i] = vals[i];
}
}
Capteur analogique AFE5161 à 4 canaux de 3PEAK
Circuit d'application typique
Filtre numérique
Sélection du mode d'interface (Interface série)
Broches PAR/SER/BYTESEL et DB15/BYTESEL permettent de choisir entre :
- Lecture parallèle : CS et RD contrôlent DB[15:0]
- Lecture par octet : La broche DB14/HBEN détermine l'ordre MSB/LSB.
- Lecture série : CS, SCLK, BUSY, FRSTDATA, DOUTA et DOUTB. Les résultats des deux premiers canaux apparaissent sur DOUTA, les deux suivants sur DOUTB (ordre inverse), permettant un débit plus élevé.
Lancement de la conversion
CONVSTA et CONVSTB doivent être mis à l'état haut simultanément pour démarrer l'échantillonnage synchronisé des 8 canaux.
Diagramme temporel de la lecture série
Sortie série
Schéma du circuit
Acquisition des 4 tensions de canal
void AFE5161_Read4Channels(TPAFE51* sensor) {
uint16_t ch1=0, ch2=0, ch3=0, ch4=0;
CS_LOW();
CONVSTA_HIGH();
CONVSTB_HIGH();
Delay(10);
for (int i=15; i>=0; i--) {
SCK_HIGH();
Delay(10);
ch1 |= (ReadDOUTA() << i);
ch3 |= (ReadDOUTB() << i);
SCK_LOW();
Delay(10);
}
for (int i=15; i>=0; i--) {
SCK_HIGH();
Delay(10);
ch2 |= (ReadDOUTA() << i);
ch4 |= (ReadDOUTB() << i);
SCK_LOW();
Delay(10);
}
CS_HIGH();
CONVSTA_LOW();
CONVSTB_LOW();
sensor->channel[0] = ch1; // CH1
sensor->channel[1] = ch2; // CH2
sensor->channel[2] = ch3; // CH3
sensor->channel[3] = ch4; // CH4
}
Données du capteur de niveau d'huile
Exemples de valeurs AD lues :
20878, 20877, 20923, 19391, 16765, 14355, 11321, 10017, 8409, 6522, 4174...
Relation AD-Courant pour le niveau d'huile
Canal 3 : AD=20878 -> 99% -> 20.878mA ; AD=14336 -> 60% -> 14.336mA ; AD=4176 -> 0% -> 4.176mA.
Détails du capteur de niveau
Bas : 0x11A8 (4520, 4.520mA)
Haut : 0x52B3 (21171, 21.171mA)
Diagramme de câblage du capteur de niveau Puce de pont série-ethernet CH9120
Configuration en mode client (pour MS2005-Dev)
Chemin : D:\LH_Tools\CH9120EVT\EVT\CH9120NetModuleConfig.exe
Après la recherche d'appareil, double-cliquer sur le nom affiché pour remplir tous les champs de configuration.
Configuration en mode serveur
Chemin et procédure identiques au mode client.
Configuration par défaut du CH9120
Broches d'état du CH9120
| Broche | Nom | Description | Niveau actif | Indication |
|---|---|---|---|---|
| 15 | LINK | État de connexion PHY | Bas | Bas : Lien physique établi. Haut : Pas de lien. |
| 14 | ACT | Activité de données Ethernet | - | Clignotement : Transfert de données en cours. |
Commutateur Ethernet IP175GH
Signification des LED verte et jaune
Couleur des indicateurs
Obtention de l'état de liaison et d'activité via microcontrôleur
L'interaction se fait via les interfaces de gestion SMI (Serial Management Interface) ou SPI en lisant les registres internes de la puce.
Extraction de l'état via les registres
Procédure via l'interface SMI (réf. datasheet "4.6 Serial management interface") :
Interface de gestion série
Adresse PHY
Registre de contrôle spécial
Registre de statut spécial
Adresses des registres
Adresses PHY des ports
Port 0 : 2 ; Port 1 : 3 ; Port 2 : 4 ; Port 3 : 6 ; Port 4 : 7
Automate programmable SIAETC-S7-200 (PLC)
Notes
Problèmes
Problème 1 : Les données temps réel incluent des adresses non enregistrées, que le PC ne stocke pas lors de la requête.
Problème 2 : (À décrire)
Contrôleur d'affichage ST7735S
Sélection du type d'interface
Direction d'affichage (pour résolution 128x160)
Paramètres MADCTL (MY, MX, MV, ML, RGB, MH) :
Exemples de valeurs : 0x08, 0xC0, 0x60, 0xA0.
Écriture de pixels (RGB 5-6-5 bits, 65k couleurs)
Commandes d'affichage
NORON (13h) : Mode d'affichage normal.
PTLON (12h) : Mode d'affichage partiel.
INVOFF (20h) / INVON (21h) : Inversion d'affichage.
GAMSET (26h) : Définition de la correction gamma.
DISPOFF (28h) / DISPON (29h) : Activation/désactivation de l'affichage.
CASET (2Ah) / RASET (2Bh) : Définition des adresses de colonnes/lignes.
RAMWR (2Ch) : Écriture en mémoire d'image.
Exemples d'utilisation (128x160)
Mode normal (MX=MY=ML='0', SMX=SMY='0').
Mode partiel (définition de PSL et PEL).
Paramètres pour d'autres résolutions
Exemples pour 132x162 (GM[1:0]="00").
Direction d'écriture des données (Frame Data Write Direction)
Exemples de défilement (Rolling Scroll) avec ML=0 et ML=1.
Résumé des commandes importantes
PTLON (12h), NORON (13h), INVOFF (20h), INVON (21h), GAMSET (26h), DISPOFF (28h), DISPON (29h), CASET (2Ah), RASET (2Bh), RAMWR (2Ch), RAMRD (2Eh), PTLAR (30h), SCRLAR (33h), IDMOFF (38h), IDMON (39h), COLMOD (3Ah), RDID1 (DAh), RDID2 (DBh), RDID3 (DCh).
Configuration de la mémoire d'image (Display Data RAM)
Exemples de configurations pour GM[1:0]="00", "01", "11".
Interfaces parallèles (8-bit, 16-bit, 9-bit)
Optimisation de la consommation
Optimisation des sources d'horloge
Configuration des broches (cruciale !)
Alimentation des périphériques
Alimenter les capteurs, écrans, modules Wi-Fi uniquement lorsque nécessaire.
Réduction de la consommation des résistances de tirage
Éviter les faibles valeurs (1kΩ). Préférer 10kΩ à 100kΩ, ou utiliser les résistances internes du MCU.
[Journal de débogage :]
-ch9120_ReadPLCData–sPlcState=1–num=10,scanNum=3
getInfoFunscanNum=3,addS=1VD2700,getBitLen=1128
getInfoFunscanNum=3,addE=1VD2840,getBitLen=1128
Exemple MS2005-Dev (consommation réduite à ~5mA)
| Action | Description |
|---|---|
| Mise en veille du module SIMcom | sAPI_SystemSleepSet(SC_SYSTEM_SLEEP_ENABLE) |
| Désactivation de l'alimentation GPS | - |
| Désactivation de l'alimentation NTC | - |
| Désactivation de l'alimentation SW | - |
| Désactivation de l'alimentation 485 | - |
Exemple MS2005-Lite (consommation réduite à ~3mA)
| Action | Description |
|---|---|
| Mise en veille du module SIMcom | sAPI_SystemSleepSet(SC_SYSTEM_SLEEP_ENABLE) |
| Désactivation de la localisation Beidou | - |
| Puce 485 non montée | Élimine la consommation statique de 13mA. |