Compréhension du tableau

image

ça veut dire quoi la flèche rouge ? vous connectez directement DIN à DOUT?

Bonjour,
En faite, je pense que je n'ai pas besoin du CODEC pour vérifier mon code. Il suffit de connecter le TX (I2S_DIN) avec le RX (I2S_DOUT) vu du µP. Donc, j'ai initialisé un tableau dans le TX et il suffit de lire les valeurs de RX pour savoir s'il y a bien la communication entre le µP et le CODEC. Donc le branchement exact est plus tôt comme ça :
image
C'était ça l'idée mais je ne sais pas si c'était la bonne idée ?

c'est trop général ce que vous dites.. quel est le role du codec vis à vis de votre tableau ?

je ne sais pas ce que ça veut dire

Le CODEC me sert à récupérer un signal venant d'un capteur, et il passe pas ADC ensuite SAI et µP : Ext (capteur) ->ADC -> SAI -> Mémoire (via la DMA).
Le tableau me permet de simuler un signal en entrée d'un capteur. Du coup, cela me permet de vérifier uniquement la liaison I2S (ou SAI). Il y a beaucoup à vérifier cette partie quand même : l'horloge, la configuration, le DMA, les datas, le bit synchronisation etc...
Donc je voulais vérifier uniquement l'interface I2S (ou SAI) s'il fonctionne bien

C'est l'interface qui est définie comme ça, il y a un maître qui transmet les données et un esclave qui reçoive des données. Rien de spécial, comme un port série par exemple

@DOY38

Ton tableau servirait à déposer des données en RAM , périodiquement et par blocs, pour que le module I2S de ton STM32 puisse être alimenté en continu par DMA pour émettre ces données vers la carte audio via l'I2S ?

avec votre image c'est ça ?

et vous voulez simuler comme cela ?

Alors, je ne suis pas sur 100% mais sur le forum de ST (il y a une personne qui me dit de faire ça), mais ça me parait normal et tout à fait faisable. Le chemin de ma configuration c'est ça :

  • ext.capteur -> ADC -> SAI RX -> DMA -> SRAM
  • SRAM -> DMA -> SAI TX -> ext. DAC (par exemple mais pas obligatoire).

Donc mon tableau dans la SRAM, et pour l'instant je pense que ça fonctionne. Il me reste juste une étape récupérer les données dans SAI TX pour comparer aux valeurs que j'ai envoyé (c'est mon tableau initialisés tout au début de mon Topic). Si j'ai les même valeurs alors je peux dire que mon interface SAI (ou I2S) fonctionne.
Après il y a la partie capteur et post-traitement après.....

Oui c'est presque ça, vous enlevez la partie Audio Processing et c'est bon

Sans entrer dans les détails mais la partie transmission est configurée et fonctionne. Maintenant, je cherche un moyen de récupérer ce que j'ai envoyé (un tableau de valeur simulé par la sortie d'un ADC) dans la partie RX (du µP ou bien TX du SAI). Si les 2 sont identiques alors mon interface est bon et je peux poursuivre la suite.

mais est-ce que vous avez un pass-through dans l'audio switch pour renvoyer ce que vous recevez sur DIN vers DOUT ?

Voici ma configuration sous STMCubeIDE :


Memory : C'est la mémoire dans mon cas c'est le tableau qui est géré par la DMA (avec une interruption et un callback...).
Peripheral : C'est tout ce que vous voulez sauf la mémoire et le CPU, dans mon cas c'est le SAI.

Regardez, ma configuration dans le message précédent et vous comprendrez. Mon code fonctionne voici un extrait :

  HAL_SAI_RegisterCallback(&hsai_BlockB1, HAL_SAI_TX_HALFCOMPLETE_CB_ID, HAL_SAI_TxHalfCpltCallback);
  HAL_SAI_RegisterCallback(&hsai_BlockB1, HAL_SAI_TX_COMPLETE_CB_ID, HAL_SAI_TxCpltCallback);
  fresult= HAL_SAI_Init(&hsai_BlockB1);
  if (fresult != HAL_OK)
	{
  	return HAL_ERROR;
	}

  fresult = HAL_SAI_Transmit_DMA(&hsai_BlockB1, (uint8_t *)playbuf , (sizeof(playbuf))/4);

ça compile et je vois des données. Je connais pas le STM32 mais en allant dans la documentation j'arrive quand même à savoir comment passer les paramètres dans le Callback et comment initialiser et lancer le SAI en DMA.

Donc ceci n'est plus votre question?

Comment ça, oui pour la transmission mais pour la réception comment je fais ?

pour pouvoir récupérer des données sur la sortie I2S DOUT il faut
-soit appliquer un signal analoique sur MIC_IN ou LINE_IN (trajet en rouge)
-soit , si cela est possible avec le SGTL5000, activer un looback pour retourner ce qui est reçu sur I2S_DIN (trajet en vert)
tout ceci en pilotant les horloges I2S et en gérant la reception via le DMA du STM32
image

ceci dit je ne suis pas certain de bien comprendre la demande.....

oui c'était ma question

-explorer la Data Sheet du SGTL5000 , voire la ou les Notes d'Application

-poser la question sur le Forum PJRC Teensy dès qu'il sera rétabli, il y a là bas de bon connaisseurs du SGTL5000

Oui c'est via la configuration que je vous avais montré avec le STM32CubeIDE. Parfois c'est trompeur le synoptique, il faut voir comment il fonctionne le protocole I2S (ou le SAI).

ça m'étonnerai, j'ai acheté une carte chez eux (la carte audio) il ne veut pas entendre parler de STM32, il faut utiliser leur carte Teensy sinon rien !

Cela ne vous donnera pas comment il faut configurer et comment il fonctionne le I2S et en plus en fonction du µP que vous utilisez