REKLAMA

main.c

Jak wysłać zapytanie Sys_version do CC2480 przez UART?

Witam, mam pytanie związane z ukladem CC2480.Chciałbym się odwas dowiedzieć w jaki sposób należy się wysłać zapytanie Sys_version do układu CC2480 aby otrzymać odpowiedź... Wysyłałem już różnymi metodami, zmieniałem wartość kontrolna w ramce i raz odczytuje FC i FF a za innym razem znów coś innego. Jeśli dobrze zrozumiałem to w odpowiedzi na moje zapytanie powinienem otrzymać dana o 8 bajtach. Próbowałem również komunikacji SPI, wprawdzie układ zeruje i ustawia SRDY jednak zadnych danych nie otrzymuje... Przesyłam również moją roboczą wersję programu... (wersje do sprawdzenia komunikacji i czy uklad działa) Za wszelką pomoc będę wdzieczny pozdrawiam Marcin Barowski


Pobierz plik - link do postu

#include & lt; Msp430x44x.h & gt;



#define CTS_In (P3IN & 1)
#define RTS_On (P2OUT & =~ 128);
#define RTS_Off (P2OUT |= 128);
#define ResetN_DIR P5DIR |= 64;
#define ResetN_Off P5OUT |= 64;
#define ResetN_On P5OUT & =~ 64;
#define CFG0 4;
#define CFG1 8;

static unsigned char Tab[500];
static unsigned char Tab1[6];
static char i = 0;
static char as = 0;



void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
ResetN_DIR;
ResetN_On;
FLL_CTL0 |= XCAP18PF; // Configure load caps
P2SEL |= 0x30; // P2.4,5 = USART0 TXD/RXD
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL1; // UCLK = SMCLK
UBR00 = 0x09; // 1MHz 115200
UBR10 = 0x00; // 1MHz 115200
UMCTL0 = 0x08; // modulation
UCTL0 & = ~SWRST; // Initialize USART state machine
IE1 |= URXIE0; // Enable USART0 RX interrupt

// konfiguracja portów
P3DIR & =~ 1; // port CTS jako wejscie
P3DIR |= 32; // port Power_Zigbee jako wyjscie
P2DIR |= 128; // port RTS jako wyjscie
P4DIR |= 12; // port CFG0, CFG1 jako wyjscie

P3OUT & =~ 32; // zalacz uklad zigbee
P4OUT |= CFG0; // zewnetrzny rezonator
P4OUT & =~ CFG0; // komunikacja UART

ResetN_Off;
RTS_On;
while (!(IFG1 & UTXIFG0)); // wysylanie zapytania o wersje ukladu
TXBUF0 = 0xFE;
while (!(IFG1 & UTXIFG0));
TXBUF0 = 0x00;
while (!(IFG1 & UTXIFG0));
TXBUF0 = 0x21;
while (!(IFG1 & UTXIFG0));
TXBUF0 = 0x02;
while (!(IFG1 & UTXIFG0));
while (!(IFG1 & UTXIFG0));
TXBUF0 = 0x05;
while (!(IFG1 & UTXIFG0));
TXBUF0 = 0x61;
while (!(IFG1 & UTXIFG0));
TXBUF0 = 0x02;
while (!(IFG1 & UTXIFG0));
TXBUF0 = 0x06;
RTS_Off;
_BIS_SR(GIE);
for(;;);

}


#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
{
Tab[as] = RXBUF0;
as++;
if(as & gt; 501)
{
as=0;
}

}