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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> SPI master 4-wire
Fenriz
сообщение Feb 24 2006, 16:08
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 12-12-05
Пользователь №: 12 106



Подскажите:
1. Я сконфигурировал SPI в 4-х проводный мастер.
Пины : P3SEL=0x0F: P3.0 - STE
P3.1 - SIMO
P3.2 - SOMI
P3.3 - UCLK
Перед передачей MASTER - > SLAVE подаём на STE сигнал низкого уровня. Как это правильно сделать в коде?
Мой вариант: P3DIR|=0x01;
P3OUT|=0x00; не прошёл.

2. Дайте ссылу на литературу где можно подробнее почитать о 4-wire SPI для MSP430. Я пользовался slau056e и msp430f*44* там очень поверхностно
Заранее спасибо.
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 24 2006, 17:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Если вы используете 4-проводной SPI, то для мастера STE это входной сигнал, а не выходной. STE предназначен для устранения конфликтов на шине, когда транзакцию одного мастера хочет прервать другой мастер. При этом вероятен конфликт когда два выхода SIMO будут работать на одну линию. Чтобы предотвратить эту ситуацию второй мастер может подать лог 0 на вход STE первого мастера. При этом сигналы SIMO и UCLK первого мастера переводятся в режим ввода, а в регистре RxCTL устанавливается бит FE. То бишь STE в режиме 4-ware можно использовать как входной сигнал CS, но не как выходной сигнал управления CS-ом слейва. Для управления CS-ом слейва нужно использовать другой пин GPIO.
Все это вполне понятно описано в User's Guide MSP430x1xx Family. У меня они почти всех ревизий есть. ИМХО более внятно описано в ранних ревизиях.
Go to the top of the page
 
+Quote Post
Fenriz
сообщение Feb 26 2006, 01:26
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 12-12-05
Пользователь №: 12 106



Дело в том, что я подключаю к микроконтроллеру датчик. Он точно сконфигурирован как SLAVE - у него 4 провода в том числе и STE . Сам SLAVE может послать такой сигнал?
Go to the top of the page
 
+Quote Post
Fenriz
сообщение Feb 26 2006, 10:43
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 12-12-05
Пользователь №: 12 106



Проанализировал драйвер датчика там STE как input. Используется для зазрешения передачи и приёма slave и инициируется master-ом.
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 26 2006, 11:34
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



В режиме слейва STE функционирует как входной сигнал CS. Лог. 0 разрешает работу выхода SOMI. Т.е. для вашего случая мастер надо в 3-ware режиме использовать.
А что за датчик, если не секрет?
Go to the top of the page
 
+Quote Post
Fenriz
сообщение Feb 26 2006, 15:13
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 12-12-05
Пользователь №: 12 106



Да нет никакого секрета - датчик отпечатков пальцев.
То есть вы предлагаете сделать вот так для мастера:
P3SEL=0x0E; // конфигурим пины SPI
P3DIR=0x01;// P3.0 как универсальный I/O на выход и держим высокий уровень
P3OUT=0x01;//
P3OUT&=~0x01; // перед началом передачи посылаем низкий уровень
p3OUT=0x01; // по окончанию передачи опять востанавливаем высокйй ?
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 26 2006, 15:56
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Угу. Примерно так. Только не забудьте сам USART сконфигурировать в 3-ware режиме как мастер.
Код
U0CTL|=SWRST;          // сброс USART
U0CTL|=CHAR+SYNC+MM;   //SPI, 8-бит, master
U0TCTL=CKPL+SSEL1+STC; //SPI3, UCLK=SMCLK, 3-ware
ну и т.д.

Датчик для сканирования отпечатка пальца или для распознавания образа? На MSP430???
Go to the top of the page
 
+Quote Post
Fenriz
сообщение Feb 27 2006, 15:41
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 12-12-05
Пользователь №: 12 106



для сканирования отпечатка. К контроллеру подключается датчик с одной стороны, с другой модем. Должно получиться что-то типа модуля для передачи отпечатков пальцев.
Скажите, а при установке источника тактирования:
1) UTCTL=SSEL1+SSEL0; (1 1 - SMCLK);
2) UTCTL=SSEL1; (1 0 - SMCLK)
есть разница между 1 и 2 случаем?
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 27 2006, 16:20
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Fenriz @ Feb 27 2006, 20:41) *
Скажите, а при установке источника тактирования:
1) UTCTL=SSEL1+SSEL0; (1 1 - SMCLK);
2) UTCTL=SSEL1; (1 0 - SMCLK)
есть разница между 1 и 2 случаем?

Нет разницы. Выбирается один и тот же источник тактирования. Но это лишь для мастера. Для слейва в любом случае входным тактовым сигналом будет UCLK.
Go to the top of the page
 
+Quote Post
Fenriz
сообщение Mar 2 2006, 03:33
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 12-12-05
Пользователь №: 12 106



Ещё один вопрос:
когда в Rg FLL_CTL бит XTS_FLL=0 - используется низкочастотный режим.
при нём определяется значение битов XCAPxPF.
В примерах кодов texas нашёл 2 случая:
FLL_CTL0|=XCAP18PF;
FLL_CTLO|=XCAP14PF;
(Я по началу думал что это ёмкость (в пФ) нагрузочных конденсаторов для кварцевого резонатора, но в документации определено всего 4 значения: 1,6,8,10)
Что означают 18 и 14 в записях и по какому принципу они выбираются?
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 2 2006, 10:30
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Все верно. XCAPxxPF соответствуют значению конденсатора в pF.
Дело в том, что значения 1pF, 6pF, 8pF и 10pF вы видимо прочитали в User's Guide, которое одно на все семейство MSP430x4xx. Но в даташите MSP430F427 указаны другие значения этих конденсаторов, конкретно для этого кристалла: 0pF, 10pF, 14pF и 18pF. см. таблицу crystal oscillator, LFXT1 oscillator. Параметры подобные этому всегда нужно уточнять в datasheet конкретного кристалла, а не брать из руководства.
Go to the top of the page
 
+Quote Post
Fenriz
сообщение Mar 2 2006, 15:17
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 12-12-05
Пользователь №: 12 106



Посмотрел даташит на f499 - c частотами всё так как вы сказали. Но пояснение дано только на использование 0pF при наличие внешних емкостей. 32кГц кристал можно включить пользуясь только XCAPxxPF без внешних емкостей. Разница в емкостях 10, 14, 18 не велика - получается нет принципиальной разницы в использовании?
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 2 2006, 21:54
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Fenriz @ Mar 2 2006, 20:17) *
Разница в емкостях 10, 14, 18 не велика - получается нет принципиальной разницы в использовании?

Есть конечно разница! Кварцы-то ведь тоже разные бывают, предназначеные для работы на различную емкостную нагрузку. Читайте Application Note под номером slaa225 - MSP430 LFXT1 Oscillator Accuracy. Еще можно у Maxim/Dallas глянуть пояснение на эту же тему (точность хода RTC в зависимости от типа кварца 32kHz) App Note 58.
Go to the top of the page
 
+Quote Post
Fenriz
сообщение Mar 3 2006, 08:35
Сообщение #14


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 12-12-05
Пользователь №: 12 106



У меня в устройстве:
P3.4 для подачи сигнала STE на датчик
P3.5 для подачи RESET перед началом инициализации датчика с контроллера
P3.6 как IN. К нему подключена кнопка (по нажатию которой мастер инициирует передачу со slave)
и STE и RESET низкого уровня
P3.6 - активный уровень высокий.
начальные значения такие:
P3DIR=0x30; на выход
P3OUT=0X30; держим высокий уровень
Можно ли сбросить каждый бит в отдельности (чтоб состояние других осталось прежним) таким образом:
P3OUT&=~0x20; // reset
P3OUT=0x30; // восстанавливаем прежнее значение
P3OUT&=~0x10; // ste
P3OUT=0x30; // по окончанию передачи
а также независимо проверять содержимое бита для P3.6 (while (P3IN=0x00) {...}) ??????????????

P.S. спасибо за ссылку на литературу по кристалам - очень помогла.
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 3 2006, 09:11
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Если вы работаете с отдельными битами, то накладывайте маску при операциях с портами во всех случаях.
Не
Код
P3OUT=0x30;

а
Код
P3OUT|=0x30;
или
Код
P3OUT|=BIT4+BIT5;

Не
Код
while (P3IN=0x00) {....}

а
Код
while ((P3IN&0x40)==0) {...}
или
Код
while ((P3IN&BIT6)==0) {...}

Макросы BITx определены в заголовочном файле msp430x4xx.h
Go to the top of the page
 
+Quote Post

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

 


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


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