Tengo algunos problemas con el bus SPI de DRV8711 ( enlace ). Las lecturas repetitivas del mismo registro dan los mismos valores pero la comunicación no parece confiable.
Estoy usando dos tableros de desarrollo BOOST-DRV8711 ( enlace ) conectados en el mismo SPI de un xmega , con diferentes pines SS, por supuesto. Actualmente me conecté a través de los siguientes pines:
- fuente de alimentación del motor (12V)
- bus SPI (SCK, MISO, MOSI, SS)
- RESTAURAR y DORMIR
La frecuencia del bus SPI se establece en 250 kHz y los bordes de las señales son buenos. Primera pregunta: no estoy seguro sobre el modo SPI a usar. Aquí los ejemplos comunes de los cuatro modos:
yesteeseldiagramaenlapágina26delahojadedatos:
Comprendo las muestras DRV8711 en el flanco ascendente de la señal de reloj provista que conduce a los modos SPI 0 o 3. En el modo 0, el flanco ascendente también es el primer borde del reloj, mientras que en el modo 3, el flanco ascendente es el segundo y último borde.
No entiendo si los números colocados en esos bordes representan el punto de muestras o los ciclos del reloj.
Por supuesto que ya he probado los dos modos pero ninguno funciona perfectamente. En el modo 0 parece que puedo leer correctamente, pero el DRV8711 no siempre comprende los escritos.
Y el comportamiento más extraño es que ambos módulos reciben los mismos comandos (es decir, microstepping) incluso si solo se activa el pin SS relacionado:
DRV8711_WakeUp();
DRV8711_Reset();
DRV8711_SetMode(&PORTA, PIN4_bm, DRV8711_REG_CTRL_MODE_128);
DRV8711_SetMode(&PORTA, PIN3_bm, DRV8711_REG_CTRL_MODE_2);
DRV8711_SetEnable(&PORTA, PIN4_bm, true);
DRV8711_SetEnable(&PORTA, PIN3_bm, true);
Bueno, ambos controladores están configurados con el modo 128 o 2 (en diferentes ejecuciones). Apuesto a que la comunicación SPI no es confiable debido a una configuración incorrecta.