Перейти к содержанию
    

LPC2103, использование SPI

В книге Тревора Мартина сказано, что при использовании модуля SPI в режиме ведущего нужно на P0.7 (SSEL0) P0.20 (вероятно имеется ввиду Р0.21 SSEL1) принудительно подавать 1. Так ли это? Мне нужно использовать только SPI0 как мастер. При єтом планировалось, что Р0.7 будет управлять выводом SS ведомого. Возможно ли так поступить? Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В книге Тревора Мартина сказано, что при использовании модуля SPI в режиме ведущего нужно на P0.7 (SSEL0) P0.20 (вероятно имеется ввиду Р0.21 SSEL1) принудительно подавать 1. Так ли это? Мне нужно использовать только SPI0 как мастер. При єтом планировалось, что Р0.7 будет управлять выводом SS ведомого. Возможно ли так поступить? Спасибо.

В режиме мастера пины SSELx процессоров LPC2103,2102,2101 можно юзать по любому назначению. Вот выдержка из юзер мануала

On the LPC2101/02/03 the SSEL0 pin can be used for a different function when the SPI0

interface is only used in Master mode. For example, the pin hosting the SSEL0 function can

be configured as an output digital GPIO pin or used to select one of the Match outputs.

В книге Тревора Мартина возможно описываются старые процессоры ARM7 от NXP (LPC2104,2105,2106,2114 и др.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему вот это IO0SET |= (1<<30); работает, а на вот это IO0SET |= (1<<31); Keil ругается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странно что Кейл ругается. Может подсознательно чует быссмысленность данной операции.

Если надо установить один единственный бит в регистре надо просто

IO0SET=1<<31; И все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странно что Кейл ругается. Может подсознательно чует быссмысленность данной операции.

Если надо установить один единственный бит в регистре надо просто

IO0SET=1<<31; И все.

Так тоже ругается. main.c(23): warning: #61-D: integer operation result is out of range

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чисто так, совет.

 

Определяем

#define b0 1

#define b1 2

#define b2 4

..

#define b31 0x80000000

 

И юзаем просто.

Намного изящнее выглядит

IO0SET=b1|b4|b29

 

нежели страшные конструкции из 6 символов...

И кейл ругаться перестанет.

Изменено пользователем DpInRock

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще возник такой вопрос. SPI в LPC2103 позволяет передавать как 8 так и 16 бит. Можно ли переключаться "на горячую" между этими режимами? S0SPCR = 0x0824;//8 bit и S0SPCR = 0x0020;//16 bit так правильно? Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще возник такой вопрос. SPI в LPC2103 позволяет передавать как 8 так и 16 бит. Можно ли переключаться "на горячую" между этими режимами? S0SPCR = 0x0824;//8 bit и S0SPCR = 0x0020;//16 bit так правильно? Спасибо.

 

У нас на 2138 так когда-то работало. Что будет в момент передачи, я не знаю, но в момент простоя SPI переключаться можно без проблем.

Только, кажется мне, тут с третьим битом ошибка, должно быть наоборот.

 

 

PS и если плата ещё не разведена, рекомендую посмотреть на SSP - тот же SPI, но пошустрее и с FIFO.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PS и если плата ещё не разведена, рекомендую посмотреть на SSP - тот же SPI, но пошустрее и с FIFO.

Спасибо, заинтересовало. На вскидку не понял, а SSEL там автоматом выставляется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На вскидку не понял, а SSEL там автоматом выставляется?

Насколько я понимаю, там SSEL выставляется для каждого байта (или ворда) в отдельности.

Куда такой режим может пригодится, я не знаю - всегда вручную чипселектом управлял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...