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

 
 
 
Reply to this topicStart new topic
> LPC2103, использование SPI, Нужен совет
smk
сообщение Nov 11 2011, 16:40
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 11 2011, 17:03
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(smk @ Nov 11 2011, 21:40) *
В книге Тревора Мартина сказано, что при использовании модуля 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 и др.)


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 11 2011, 18:56
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Nov 11 2011, 19:11
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Странно что Кейл ругается. Может подсознательно чует быссмысленность данной операции.
Если надо установить один единственный бит в регистре надо просто
IO0SET=1<<31; И все.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 11 2011, 19:14
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(DpInRock @ Nov 11 2011, 21:11) *
Странно что Кейл ругается. Может подсознательно чует быссмысленность данной операции.
Если надо установить один единственный бит в регистре надо просто
IO0SET=1<<31; И все.

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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 11 2011, 19:16
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



1U<<31
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 11 2011, 19:21
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Т.е. оно работает, но вот такие предупреждения.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Nov 11 2011, 19:21
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



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

Определяем
#define b0 1
#define b1 2
#define b2 4
..
#define b31 0x80000000

И юзаем просто.
Намного изящнее выглядит
IO0SET=b1|b4|b29

нежели страшные конструкции из 6 символов...
И кейл ругаться перестанет.

Сообщение отредактировал DpInRock - Nov 11 2011, 19:22


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 11 2011, 19:21
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(aaarrr @ Nov 11 2011, 21:16) *
1U<<31

Точно. Помогло. Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 12 2011, 11:21
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Nov 14 2011, 09:35
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(smk @ Nov 12 2011, 15:21) *
Еще возник такой вопрос. SPI в LPC2103 позволяет передавать как 8 так и 16 бит. Можно ли переключаться "на горячую" между этими режимами? S0SPCR = 0x0824;//8 bit и S0SPCR = 0x0020;//16 bit так правильно? Спасибо.


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


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


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 14 2011, 11:19
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(esaulenka @ Nov 14 2011, 11:35) *
PS и если плата ещё не разведена, рекомендую посмотреть на SSP - тот же SPI, но пошустрее и с FIFO.

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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Nov 14 2011, 13:00
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(smk @ Nov 14 2011, 15:19) *
На вскидку не понял, а SSEL там автоматом выставляется?

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


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:35
Рейтинг@Mail.ru


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