Tengo un Arduino Due con un chip SAM3X8E y estoy tratando de leer datos SPI de una fuente externa que se comunica en SPI. Pude obtener datos identificando bytes específicos que son identificadores, pero me di cuenta de que el reloj de mi placa no está sincronizado con la fuente que ingresa. Imprimo los bytes en formato hexadecimal (08 00 FF AB, etc.) y cada mensaje es 128 bytes de longitud.
Para ser claros, la fuente es un maestro SPI que está enviando datos en su propia línea MOSI, pero actualmente estoy tratando a mi placa como un maestro ya que no sé cómo hacer el modo esclavo en el vencimiento. Conecto la línea Slaves MOSI a la línea MISO de mi placa, y simplemente transfiero datos y leo 128 bytes, pero parece que no obtengo los mismos datos. ¿Hay alguna forma de que pueda ver el reloj del reloj externo y sincronizar mi placa con ese reloj para asegurarme? Mi código fuente está a continuación. Los únicos métodos en los que puedo pensar son averiguar cómo implementar la placa en modo esclavo (no estoy lo suficientemente familiarizado con los registros y cómo cambiar esto, o leer datos en modo esclavo) o sincronizar los relojes para que mi placa está leyendo y muestreando los datos de origen correctamente.
¿Podría alguien comprobar si mi pensamiento es correcto o no necesito hacer ningún cambio ya que los datos están en un registro de desplazamiento?
Gracias
void setup () {Serial.begin (9600); SPI.begin (); SPISettings settings (50000000, LSBFIRST, SPI_MODE1); // Tasa de muestreo 50Mhz, velocidad máxima de la fuente SPI.beginTransaction (configuración);} void loop () {int i = 0; valor uint8_t; valor = SPI.transfer (0x00); while (value! = 8) {// buscando el identificador 0x08 value = SPI.transfer (0x00); } SPI.transfer (búfer, 127); // obtiene el resto de 127 bytes Serial.print (valor, HEX); Serial.print (""); for (i = 0; i < 127; i ++) {if (buffer [i] == 0) {Serial.print (buffer [i], HEX); Serial.print (0, HEX); } else {Serial.print (buffer [i], HEX); } Serial.print (""); } Serial.println ("\ n");}