реклама на сайте
подробности

 
 
> Инициализация скорости SPI
Oleg_IT
сообщение Dec 21 2009, 13:37
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Разбираюсь в работе МК.
В примере, привёл ниже, даны следующие две функции. Не понятно, почему скорость SPI инициализируется нулём? В примечании написано

UxBRx Биты 7-0 Генератор скорости передачи использует содержимое {UxBR1+UxBR0} для установки скорости передачи. Наименьший коэффициент деления равен двум.
Больше в коде ни где нет обращения к регистрам UCB1BR0 и UCB1BR1.

Код
/********************************************************************************
***
* @fn          halRadioSpiInit
*
* @brief       Initalise Radio SPI interface
*
* @param       none
*
* @return      none
*/
static void halRadioSpiInit(uint32 divider)
{
    UCB1CTL1 |= UCSWRST;                          // Put state machine in reset
    UCB1BR0 = LO_UINT32(divider);
    UCB1BR1 = HI_UINT32(divider);
    P5DIR |= 0x01;
    P5SEL |= 0x0E;                               // P7.3,2,1 peripheral select (mux to ACSI_A0)
    UCB1CTL1 = UCSSEL0 | UCSSEL1;                // Select SMCLK
    UCB1CTL0 |= UCCKPH | UCSYNC | UCMSB | UCMST; // 3-pin, 8-bit SPI master, rising edge capture
    UCB1CTL1 &= ~UCSWRST;                        // Initialize USCI state machine
}

……………………………

/********************************************************************************
***
* @fn      halAssyInit
*
* @brief   Initialize interfaces between radio and MCU
*
* @param   none
*
* @return  none
*/
void halAssyInit(void)
{
    halRadioSpiInit(0);
    halMcuRfInterfaceInit();
#ifndef MRFI_CC2520
    halDigioConfig(&pinRadio_GPIO0);
#endif
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
FREEKER
сообщение Jan 10 2010, 11:00
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 24-06-06
Пользователь №: 18 330



А я использую следующее:
Мы знаем скорость тактирования, и нам нужна скорость SPI
После #include "msp430x16x.h" вставляем определение:
Код
#define Fosc 8000000        //Hz - Частота тактирования кварца или внутреннего генератора
#define Cspi 4800        //Bit - требуемая скорость SPI
#define Kff Fosc/Cspi


Инициализация SPI выглядит так:
Код
        ME2 |= USPIE1;
        U1CTL = 0x5E;        //#01010111b;        The inactive level is high, ACLC
        U1TCTL = 0x12;        //#0001 0010b        p294(Slau049f)
        U1BR0 = Kff%256;    // Наша скорость будет здесь
        U1BR1 = Kff/256;    // и здесь
        U1MCTL = 0x00;
        U1CTL &=~0x01;


Для MSP430F2*** инициализация будет выглядеть иначе, но смысл тот же.
Вот так:
Код
        UCB1CTL0 |= UCCKPL + UCMST + UCSYNC;    // The inactive state is high, Master mode, Synchronous Mode
        UCB1CTL1 |= UCSWRST + UCSSEL_2;            // SMCLK, Enabled. USCI logic held in reset state.
        UCB1BR0 = Kff%256;
        UCB1BR1 = Kff/256;
        UCB1CTL1 &=~UCSWRST;            // Disabled. USCI reset released for operation.


Сообщение отредактировал FREEKER - Jan 10 2010, 11:04
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th August 2025 - 13:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016