Argon (19.04.2010 17:15 - 17:20, просмотров: 96) ответил Андрей7777 на подскажите, как сконфигурировать SPI1.. по даташиту он идет как SPP, нужно запустить в режиме SPI...
вдруг поможет прямо сейчас объяснять некогда, по этому показываю "как есть". spi 16 бит, без прерываний.
void SSP_Enable(void)
{
word SSPFREQ_Prescaler, SCR;
//Инициализация SPI
SCR = 0;
SSPFREQ_Prescaler = 4; //CPSDVSR, предделитель частоты PCLK_Freq.
//Возможные значения: четные 2...254. В режиме slave - мин значение 12.
//Bit Frequency = PCLK_Freq/(SSPFREQ_Prescaler*(SCR+1))
//для PCLK_Freq = 55.296000 и SSPFREQ_Prescaler = 4: Bit Frequency = 13.824 МГц
PCONP &= ~PSPI1_BIT; //превентивно отрубаем режим spi1
PCONP |= PSSP_BIT; //и врубаем режим ssp1
PINSEL1 |= BIT3 | BIT5;
SSPCPSR = SSPFREQ_Prescaler;
//Control Register 0. Selects the serial clock rate, bus type, and data size.
//SSPCR0 = 0x0f | SSP_CPOL_BIT | SSP_CPHA_BIT | (((word)SCR) << 8);
//SSPCR0 = 0x0f | SSP_CPOL_BIT | (((word)SCR) << 8);
SSPCR0 = 0x0f | (((word)SCR) << 8);
//SSPCR0 = 0x0f | SSP_CPHA_BIT | (((word)SCR) << 8);
//Interrupt Mask Set and Clear Register
SSPIMSC = 0x00;
//Raw Interrupt Status Register
SSPRIS = 0x00;
//Masked Interrupt Status Register
SSPMIS = 0x00;
//Interrupt Clear Register
SSPICR = 0x00;
//Control Register 1. Selects master/slave and other modes.
SSPCR1 = BIT1; // SSP включен
SSP_RxFIFO_Clear();
}