S
sebmaster
Guest
Hola,
Tengo una AVR32 que necesita enviar 21 palabras poco (mínimo) a un CPLD.
Tengo la intención de utilizar el bus SPI para esto y han conseguido crear todo para arriba, con un tamaño de palabra de 11 bits.
La idea es que tome un entero, tome la parte superior 11 bits, el cambio que dejó a 11 lugares, tome la parte superior 11 bits de nuevo, a continuación, enviar los dos valores en el orden inverso llegué (a los SPI envía datos LSB primero).
Sin embargo, mi programa no funciona y no puedo entender por qué no, mirando a la salida de SPI en un ámbito de aplicación de la LSB (los primeros 21 bits enviados) son siempre cero.
Mi valor de la prueba es 0xFFFFFFFF así que tendríamos que hacer un poco de desplazamiento de 16 antes de que el valor de la palabra menor puede bajar por debajo de su máximo ¿no?
Aquí está mi código:
Código:
spi_status_t respuesta;
word_high unsigned short = (datos y 0xFFE0);
data = datos <<11; / / desviación a la izquierda por 11 lugares para conseguir palabra próximos 11 bits.
word_low unsigned short = (datos y 0xFFE0);respuesta = spi_write (spi, word_low);if (respuesta == SPI_OK)
(While (spi_writeEndCheck (spi) == 0) ()
volver spi_write (spi, word_high);
)
más
retorno de respuesta;
Tengo una AVR32 que necesita enviar 21 palabras poco (mínimo) a un CPLD.
Tengo la intención de utilizar el bus SPI para esto y han conseguido crear todo para arriba, con un tamaño de palabra de 11 bits.
La idea es que tome un entero, tome la parte superior 11 bits, el cambio que dejó a 11 lugares, tome la parte superior 11 bits de nuevo, a continuación, enviar los dos valores en el orden inverso llegué (a los SPI envía datos LSB primero).
Sin embargo, mi programa no funciona y no puedo entender por qué no, mirando a la salida de SPI en un ámbito de aplicación de la LSB (los primeros 21 bits enviados) son siempre cero.
Mi valor de la prueba es 0xFFFFFFFF así que tendríamos que hacer un poco de desplazamiento de 16 antes de que el valor de la palabra menor puede bajar por debajo de su máximo ¿no?
Aquí está mi código:
Código:
spi_status_t respuesta;
word_high unsigned short = (datos y 0xFFE0);
data = datos <<11; / / desviación a la izquierda por 11 lugares para conseguir palabra próximos 11 bits.
word_low unsigned short = (datos y 0xFFE0);respuesta = spi_write (spi, word_low);if (respuesta == SPI_OK)
(While (spi_writeEndCheck (spi) == 0) ()
volver spi_write (spi, word_high);
)
más
retorno de respuesta;