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

 
 
> Пример работы SPI в MSP430F149, совместно с PGA2310
_AlexMan_
сообщение Jan 13 2009, 21:38
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 13-01-09
Пользователь №: 43 325



Помогите плиз, мучаюсь с микрухой PGA2310, управляется по SPI, так вот ни одна реализация для MSP430F149 не работает у меня, пришлите код рабочего примера с инициализацией и тупо передачей байтов по SPI.
Пожайлуста очень надо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_AlexMan_
сообщение Jan 16 2009, 21:44
Сообщение #2





Группа: Новичок
Сообщений: 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();
}
}
}

, все вроде предельно просто, но не работает wacko.gif

Вот используемая схема соединений
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
korobov_michael
сообщение Jan 20 2009, 11:48
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059



Цитата(_AlexMan_ @ Jan 16 2009, 23:44) *
#pragma vector=USART0TX_VECTOR
__interrupt void TxD()
{

...


}

[/code]
все вроде предельно просто, но не работает wacko.gif


Там есть еще одна тонкость. Преывание USART0TX_VECTOR в MSP430 работает по освобождению буфера, а не по фактической передаче байта. Это позволяет, в числе прочего, не делать задержек при передаче массивов – сразу после стоп-бита идет старт бит следующего байта. Но если буфер освободился, то это означает лишь, что можно класть в буфер следующий байт, а не то, что произошел обмен байтами. Поэтому использовать надо именно как я показывал - USART0RX_VECTOR.


Стормозил - это надо было сразу заметить
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _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


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 14:29
Рейтинг@Mail.ru


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