MRF49XA Microchip Transceiver

4

¿Alguien tiene alguna experiencia con el Microchip MRF49XA sub 1 GHz transceiver ? He estado tratando de conseguir que uno de estos hable con un pic16f886 durante la última semana más o menos sobre SPI y no he tenido la suerte de obtener una respuesta. He seguido correctamente la hoja de datos de las conexiones requeridas y puedo enviar datos desde el SDO, pero cuando extraigo el chip, selecciono un valor bajo y escribo 0x00 en la salida SPI (que debería recibir una respuesta del MRF49XA registro de estado) la línea SDI se mantiene baja. He intentado escribir todo mi propio código utilizando la hoja de datos como mi fuente y cuando eso no funcionó, descargué la aplicación de demostración de muestra y arranqué las partes relevantes, aún sin suerte.

He adjuntado una captura de pantalla de una muestra de un ciclo de escritura SPI, Cap. 1 es el SDO, Ch.2 la línea de selección de chip y Ch. 3 el SCK.

Basta con decir que al ejecutar el SPI, la lectura del SDO es baja, la SDI es baja (lamentablemente) la selección de chip (CS) es baja y el reloj pulsa correctamente. El MRF49XA usa escrituras de Word, por lo que la línea del reloj pulsa 16 veces con un espacio intermedio en el que el CS permanece bajo.

Si alguien ha tenido alguna experiencia con este chip, la ayuda sería excelente, algunos de los artículos que he encontrado en línea han sugerido que puede ser un dolor pero que nada ha ayudado hasta ahora.

Estoy usando un PIC16F886 para hablar sobre esto, corriendo 3.3V y aquí están la configuración y los comandos de SPI:

 
.
.
.
.

//set up SPI
    SSPCON = 0b00100000;
    SSPSTAT = 0b11000000;
}
void spiWrite(BYTE data)
{
    BYTE i;
    PIR1bits.SSPIF = 0;
    i = SSPBUF;
    SSPBUF = data;
    while(PIR1bits.SSPIF == 0){}
} 
BYTE spiRead(void){
    spiWrite(0x00);
    return SSPBUF;
}   

void RegisterSet(WORD setting)
{
    nCS = 0;
    spiWrite(setting >> 8);
    spiWrite(setting);
    nCS = 1;
}
    
pregunta SimonBarker

3 respuestas

2

El código de demostración es para un compilador PIC18F87J11 y C18, mientras que usted está usando un compilador PIC16F886 y algún otro compilador, probablemente incompatible.

Probablemente tendrá más éxito si usa un PIC18 en lugar del PIC16F886, con el compilador C18. Descargué el código y, aparte de tener que corregir la ubicación del archivo de inclusión, la aplicación se construyó sin problemas. También es más probable que obtengas ayuda si usas el chip y el compilador correctos, ya sea de la gente de aquí o en el foro de Microchip.

    
respondido por el Leon Heller
2

Desde su captura de pantalla, parece que su SDO cambia en el flanco ascendente del reloj. Si bien no he usado este producto en particular, a otras partes de Microchip parece que les gusta que los datos cambien en el flanco descendente del reloj.

Según la hoja de datos, el reloj debe estar inactivo (lo que tienes) y los datos se registran en el borde ascendente del reloj. Esto significa que los datos deben ser estables en el flanco ascendente del reloj y deben cambiar en el flanco descendente del reloj.

SSPSTAT = 0b10000000;

    
respondido por el Rocketmagnet
0

Hace poco tuve este problema y aún no pude encontrar una respuesta en 2015, por lo que actualicé este hilo.

En realidad, leí el registro con un alcance, por lo que no estoy seguro de cuándo se registraron los datos, pero sí conozco este dispositivo y sugiero que realice una de las siguientes acciones.

CS bajo, luego marque 0x0000 en el MRF. Mientras haces esto, captura el SDO del MRF. Algunos registros eliminan un byte durante la segunda mitad de la escritura, es decir, en los relojes 8-15 de la palabra de comando (el registro Rx FIFO, por ejemplo), pero como la palabra de estado es de 16 bits, es posible que tenga que cerrar la sesión después de mando.

Se acaba de marcar, la palabra de estado se desactiva cuando se registra en 0x0000 con MSB realmente presente en SDO cuando CS = 0. (todas las demás palabras de comando comienzan con un 1, por defecto se presenta la palabra de estado)

    
respondido por el a blake

Lea otras preguntas en las etiquetas