|
SPI master 4-wire |
|
|
|
Feb 24 2006, 16:08
|
Участник

Группа: Новичок
Сообщений: 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* там очень поверхностно Заранее спасибо.
|
|
|
|
|
Feb 26 2006, 01:26
|
Участник

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

|
Дело в том, что я подключаю к микроконтроллеру датчик. Он точно сконфигурирован как SLAVE - у него 4 провода в том числе и STE . Сам SLAVE может послать такой сигнал?
|
|
|
|
|
Feb 26 2006, 10:43
|
Участник

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

|
Проанализировал драйвер датчика там STE как input. Используется для зазрешения передачи и приёма slave и инициируется master-ом.
|
|
|
|
|
Feb 26 2006, 15:13
|
Участник

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

|
Да нет никакого секрета - датчик отпечатков пальцев. То есть вы предлагаете сделать вот так для мастера: P3SEL=0x0E; // конфигурим пины SPI P3DIR=0x01;// P3.0 как универсальный I/O на выход и держим высокий уровень P3OUT=0x01;// P3OUT&=~0x01; // перед началом передачи посылаем низкий уровень p3OUT=0x01; // по окончанию передачи опять востанавливаем высокйй ?
|
|
|
|
|
Feb 27 2006, 15:41
|
Участник

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

|
для сканирования отпечатка. К контроллеру подключается датчик с одной стороны, с другой модем. Должно получиться что-то типа модуля для передачи отпечатков пальцев. Скажите, а при установке источника тактирования: 1) UTCTL=SSEL1+SSEL0; (1 1 - SMCLK); 2) UTCTL=SSEL1; (1 0 - SMCLK) есть разница между 1 и 2 случаем?
|
|
|
|
|
Mar 2 2006, 03:33
|
Участник

Группа: Новичок
Сообщений: 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 в записях и по какому принципу они выбираются?
|
|
|
|
|
Mar 2 2006, 10:30
|
Гуру
     
Группа: Свой
Сообщений: 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 конкретного кристалла, а не брать из руководства.
|
|
|
|
|
Mar 2 2006, 15:17
|
Участник

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

|
Посмотрел даташит на f499 - c частотами всё так как вы сказали. Но пояснение дано только на использование 0pF при наличие внешних емкостей. 32кГц кристал можно включить пользуясь только XCAPxxPF без внешних емкостей. Разница в емкостях 10, 14, 18 не велика - получается нет принципиальной разницы в использовании?
|
|
|
|
|
Mar 3 2006, 08:35
|
Участник

Группа: Новичок
Сообщений: 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. спасибо за ссылку на литературу по кристалам - очень помогла.
|
|
|
|
|
Mar 3 2006, 09:11
|
Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|