سلام،
خسته نباشید. لطفا میشه یکی بگه اشکال کد زیر در چی هستش؟ دیتای خروجی روی پورت سریال فقط 0x00 هستش.
برنامه master:
برنامه slave
خسته نباشید. لطفا میشه یکی بگه اشکال کد زیر در چی هستش؟ دیتای خروجی روی پورت سریال فقط 0x00 هستش.
برنامه master:
کد:
#include <stdio.h> #include "board.h" #include "dbgu.h" #include "pio.h" #include "aic.h" void delay(unsigned char x) { unsigned int i,j; for(i=0;i<1275;i++) for(j=0;j<x;j++); } static const Pin pins[] = {PINS_DBGU,PINS_SPI0, PIN_SPI0_NPCS1 }; int main(void) { PIO_Configure(pins, PIO_LISTSIZE(pins)); DBGU_Configure(DBGU_STANDARD, 115200, BOARD_MCK); // Configure PMC by enabling SPI clock AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_SPI0); AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA; printf("start printing from spi device\n\r"); AT91C_BASE_PIOA->PIO_PDR = (1 << 13 | 1 << 16 | 1 << 17 | 1 << 18); AT91C_BASE_PIOA->PIO_MDER = (1 << 13 | 1 << 16 | 1 << 17 | 1 << 18); AT91C_BASE_PIOA->PIO_ASR = (1 << 13 | 1 << 16 | 1 << 17 | 1 << 18); AT91C_BASE_PIOA->PIO_PPUER = (1 << 13 | 1 << 16 | 1 << 17 | 1 << 18); AT91C_BASE_SPI0->SPI_MR = 0x0F000013; //SPI Chip Select AT91C_BASE_SPI0->SPI_CSR[1] = 0x0F0FFF02; //Enable interrupt //AT91C_BASE_SPI0->SPI_IER = 0x40; //Enable SPI AT91C_BASE_SPI0 -> SPI_CR = AT91C_SPI_SPIEN; // SPI is enable //AIC_ConfigureIT(AT91C_ID_SPI0,0, SPI_ISR); //AIC_EnableIT(AT91C_ID_SPI0); while(1) { while(!(AT91C_BASE_SPI0->SPI_SR & 0x2)); AT91C_BASE_SPI0->SPI_TDR = 0x42; delay(10); } }
برنامه slave
کد:
#include <stdio.h> #include "board.h" #include "dbgu.h" #include "pio.h" #include "aic.h" void SPI_ISR(void) { printf("0x%X ",AT91C_BASE_SPI0->SPI_RDR & 0xff); } static const Pin pins[] = {PINS_DBGU,PINS_SPI0, PIN_SPI0_NPCS0 }; int main(void) { PIO_Configure(pins, PIO_LISTSIZE(pins)); DBGU_Configure(DBGU_STANDARD, 115200, BOARD_MCK); // Configure PMC by enabling SPI clock AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_SPI0); AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA; AT91C_BASE_PIOA->PIO_PDR = (1 << 12 | 1 << 16 | 1 << 17 | 1 << 18); AT91C_BASE_PIOA->PIO_MDER = (1 << 12 | 1 << 16 | 1 << 17 | 1 << 18); AT91C_BASE_PIOA->PIO_ASR = (1 << 12 | 1 << 16 | 1 << 17 | 1 << 18); AT91C_BASE_PIOA->PIO_PPUER = (1 << 12 | 1 << 16 | 1 << 17 | 1 << 18); printf("start printing from spi device\n\r"); AT91C_BASE_SPI0 -> SPI_MR = 0x0; //SPI Chip Select AT91C_BASE_SPI0->SPI_CSR[0] = 0x02; //Enable interrupt AT91C_BASE_SPI0->SPI_IER = 0x40; //Enable SPI AT91C_BASE_SPI0 -> SPI_CR = AT91C_SPI_SPIEN; // SPI is enable AIC_ConfigureIT(AT91C_ID_SPI0,0, SPI_ISR); AIC_EnableIT(AT91C_ID_SPI0); while(1) { } }
دیدگاه