smk 0 11 ноября, 2011 Опубликовано 11 ноября, 2011 · Жалоба В книге Тревора Мартина сказано, что при использовании модуля SPI в режиме ведущего нужно на P0.7 (SSEL0) P0.20 (вероятно имеется ввиду Р0.21 SSEL1) принудительно подавать 1. Так ли это? Мне нужно использовать только SPI0 как мастер. При єтом планировалось, что Р0.7 будет управлять выводом SS ведомого. Возможно ли так поступить? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 11 ноября, 2011 Опубликовано 11 ноября, 2011 · Жалоба В книге Тревора Мартина сказано, что при использовании модуля 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 и др.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 11 ноября, 2011 Опубликовано 11 ноября, 2011 · Жалоба А почему вот это IO0SET |= (1<<30); работает, а на вот это IO0SET |= (1<<31); Keil ругается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 11 ноября, 2011 Опубликовано 11 ноября, 2011 · Жалоба Странно что Кейл ругается. Может подсознательно чует быссмысленность данной операции. Если надо установить один единственный бит в регистре надо просто IO0SET=1<<31; И все. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 11 ноября, 2011 Опубликовано 11 ноября, 2011 · Жалоба Странно что Кейл ругается. Может подсознательно чует быссмысленность данной операции. Если надо установить один единственный бит в регистре надо просто IO0SET=1<<31; И все. Так тоже ругается. main.c(23): warning: #61-D: integer operation result is out of range Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 11 ноября, 2011 Опубликовано 11 ноября, 2011 · Жалоба 1U<<31 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 11 ноября, 2011 Опубликовано 11 ноября, 2011 · Жалоба Т.е. оно работает, но вот такие предупреждения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 11 ноября, 2011 Опубликовано 11 ноября, 2011 (изменено) · Жалоба Чисто так, совет. Определяем #define b0 1 #define b1 2 #define b2 4 .. #define b31 0x80000000 И юзаем просто. Намного изящнее выглядит IO0SET=b1|b4|b29 нежели страшные конструкции из 6 символов... И кейл ругаться перестанет. Изменено 11 ноября, 2011 пользователем DpInRock Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 11 ноября, 2011 Опубликовано 11 ноября, 2011 · Жалоба 1U<<31 Точно. Помогло. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 12 ноября, 2011 Опубликовано 12 ноября, 2011 · Жалоба Еще возник такой вопрос. SPI в LPC2103 позволяет передавать как 8 так и 16 бит. Можно ли переключаться "на горячую" между этими режимами? S0SPCR = 0x0824;//8 bit и S0SPCR = 0x0020;//16 bit так правильно? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 5 14 ноября, 2011 Опубликовано 14 ноября, 2011 · Жалоба Еще возник такой вопрос. SPI в LPC2103 позволяет передавать как 8 так и 16 бит. Можно ли переключаться "на горячую" между этими режимами? S0SPCR = 0x0824;//8 bit и S0SPCR = 0x0020;//16 bit так правильно? Спасибо. У нас на 2138 так когда-то работало. Что будет в момент передачи, я не знаю, но в момент простоя SPI переключаться можно без проблем. Только, кажется мне, тут с третьим битом ошибка, должно быть наоборот. PS и если плата ещё не разведена, рекомендую посмотреть на SSP - тот же SPI, но пошустрее и с FIFO. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 14 ноября, 2011 Опубликовано 14 ноября, 2011 · Жалоба PS и если плата ещё не разведена, рекомендую посмотреть на SSP - тот же SPI, но пошустрее и с FIFO. Спасибо, заинтересовало. На вскидку не понял, а SSEL там автоматом выставляется? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 5 14 ноября, 2011 Опубликовано 14 ноября, 2011 · Жалоба На вскидку не понял, а SSEL там автоматом выставляется? Насколько я понимаю, там SSEL выставляется для каждого байта (или ворда) в отдельности. Куда такой режим может пригодится, я не знаю - всегда вручную чипселектом управлял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться