|
Пример работы SPI в MSP430F149, совместно с PGA2310 |
|
|
|
Jan 13 2009, 21:38
|
Группа: Новичок
Сообщений: 7
Регистрация: 13-01-09
Пользователь №: 43 325

|
Помогите плиз, мучаюсь с микрухой PGA2310, управляется по SPI, так вот ни одна реализация для MSP430F149 не работает у меня, пришлите код рабочего примера с инициализацией и тупо передачей байтов по SPI. Пожайлуста очень надо!
|
|
|
|
|
 |
Ответов
|
Jan 16 2009, 21:44
|
Группа: Новичок
Сообщений: 7
Регистрация: 13-01-09
Пользователь №: 43 325

|
Вот исходный текст CODE #define bitset(var,bitno) ((var) |= 1 << (bitno)) #define bitclr(var,bitno) ((var) &= ~(1 << (bitno)))
#define B1 BIT4&P4IN //B1 - P4.4
void initSPI(); void NSS_CONFIG(char SET); void do_SPI1_start_TX();
//структуры для SPI // структура передачи typedef struct { char TXData[20]; char CurrByte; char TotalToTX; char TXBusy; } __TX;
// структура приема typedef struct { char RXData[20]; char CurrByte; char TotalRXed; } __RX;
__TX TX; __RX RX;
#pragma vector=USART0TX_VECTOR __interrupt void TxD() { if ((++TX.CurrByte < TX.TotalToTX)&&(TX.TXBusy)) { U0TXBUF = TX.TXData[TX.CurrByte];// передача байтов из буффера } else { TX.TXBusy = 0; TX.CurrByte = 0; NSS_CONFIG(1); //end SPI Transaction - CS - в "1" } }
void initSPI() { P3SEL = 0x0E; P3DIR = 0x0A; U0CTL = SWRST + SYNC + CHAR + MM; U0TCTL |= SSEL1 + STC + CKPH /*+ CKPL*/; U0BR0 = 0x08; U0BR1 = 0x00; U0MCTL = 0x000; ME1 = USPIE0; U0CTL &= ~SWRST; IE1 |= UTXIE0; }
//setting NSS_Config Setting void NSS_CONFIG(char SET) { if(SET) bitset(P6OUT,7); else bitclr(P6OUT,7); }
void do_SPI1_start_TX() { TX.TXBusy = 1; TX.CurrByte=0; RX.CurrByte=0; NSS_CONFIG(0); //start SPI Transaction - CS - в "0" U0TXBUF = TX.TXData[TX.CurrByte]; }
void main(void) { int flag = 0; P6DIR |= 0x80; bitset(P6OUT,7); TX.TotalToTX = 2; TX.TXData[0] = 0x2d; // просто для примера TX.TXData[1] = 0x7d; initSPI(); while(1) { if (((B1) == 0)&&(flag == 0)) //B1 is pressed { flag = 1; do_SPI1_start_TX(); } } } , все вроде предельно просто, но не работает  Вот используемая схема соединений
|
|
|
|
|
Jan 20 2009, 11:48
|
Частый гость
 
Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059

|
Цитата(_AlexMan_ @ Jan 16 2009, 23:44)  #pragma vector=USART0TX_VECTOR __interrupt void TxD() { ... } [/code] все вроде предельно просто, но не работает  Там есть еще одна тонкость. Преывание USART0TX_VECTOR в MSP430 работает по освобождению буфера, а не по фактической передаче байта. Это позволяет, в числе прочего, не делать задержек при передаче массивов – сразу после стоп-бита идет старт бит следующего байта. Но если буфер освободился, то это означает лишь, что можно класть в буфер следующий байт, а не то, что произошел обмен байтами. Поэтому использовать надо именно как я показывал - USART0RX_VECTOR. Стормозил - это надо было сразу заметить
|
|
|
|
Сообщений в этой теме
_AlexMan_ Пример работы SPI в MSP430F149 Jan 13 2009, 21:38 korobov_michael Инициализация
Код//структуры для SPI
struct __TX
... Jan 14 2009, 05:22 _AlexMan_ я немного видоизменил, практически ничего совсем, ... Jan 16 2009, 13:39 rezident Цитата(_AlexMan_ @ Jan 16 2009, 18:39) Мо... Jan 16 2009, 14:14 korobov_michael Цитата(_AlexMan_ @ Jan 16 2009, 15:39) я ... Jan 17 2009, 06:43 mikesm Можно вот так попробовать. Написать SPI вручную, н... Jan 16 2009, 14:40 rezident Цитата(_AlexMan_ @ Jan 17 2009, 02:44) вс... Jan 16 2009, 22:02 _AlexMan_ Исправил все замечания, за них спасибо. Все таки п... Jan 20 2009, 15:55 korobov_michael Цитата(_AlexMan_ @ Jan 20 2009, 17:55) Вс... Jan 20 2009, 19:01 _AlexMan_ аналоговый, но при развертки 1мкс должно же что то... Jan 21 2009, 08:15 rezident Цитата(_AlexMan_ @ Jan 21 2009, 13:15) А ... Jan 21 2009, 08:38 korobov_michael Так, на всякий случай. Посмотри, пожалуйста, с как... Jan 21 2009, 11:31 _AlexMan_ Нет уарт то точно тот, было бы обидно в этом ошиби... Jan 22 2009, 21:25 rezident Цитата(_AlexMan_ @ Jan 23 2009, 02:25) Ка... Jan 22 2009, 22:30  Сергей Борщ Цитата(rezident @ Jan 23 2009, 00:30) Алг... Jan 24 2009, 19:08   rezident Цитата(Сергей Борщ @ Jan 25 2009, 00:08) ... Jan 24 2009, 20:19    Сергей Борщ Цитата(rezident @ Jan 24 2009, 22:19) CS ... Jan 25 2009, 09:48 Kurt пример работы с SPI. тактирование от внешнего квар... Jan 28 2009, 04:51
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|