Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
08.02.2010, 17:05
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Не совсем всё таки ясно с CS.
Вы говорите, что он нужен даже если периферийное устройство одно.
А в этом описании http://wiki.auditory.ru/%D0%98%D0%BD...0%B9%D1%81_SPIговорят, что эти выводы использовать необязательно.
Прояснил бы кто эту путаницу.
|
|
|
|
08.02.2010, 17:15
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
И вот здесь бы тоже разъяснили что к чему.
http://www.microcontrollerov.net/ind...up-and-use-spi
(сразу перед пунктом 2.1)
Говорится о том, что "ведущее устройство для того, чтобы получить данные из ведомого устройства, должно послать данные ведомому устройству - для чтения данных с датчика необходимо послать датчику произвольные данные"
Ведь я то надеялся вывод с МК типа MOSI вообще не использовать, а вроде бы как нужно.
???
|
|
|
|
08.02.2010, 17:48
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Сообщение от DK
|
А в чем выражается?
Честно говоря, SPI не юзал софтовый. I2C и UART - часто. Особенно последний. Удобно при отладке
|
Там же разные варианты бывают. То CLOCK надо высоким оставить, то передать надо 16 бит вместо 8. В результате приходишь к выводу, что проще самому работать напрямую с регистром и полностью контролировать весь процесс. Зато с I2C проще работать через библиотеку. А то с сигналами АСК запутаться легко.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
08.02.2010, 17:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Сообщение от yellow87
|
Ведь я то надеялся вывод с МК типа MOSI вообще не использовать, а вроде бы как нужно.
|
Вы бы написали что за девайс подключаете, больше ответов получите. А так произвольные данные можно послать и не с контроллера - подтяните MOSI слейва к Vcc через резистор и освободится вывод MOSI на контроллере. Будете посылать "произвольные 0xFF" И в минимуме обойдетесь SCK и CS.
|
|
|
|
08.02.2010, 17:58
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,535
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Сообщение от yellow87
|
И вот здесь бы тоже разъяснили что к чему.
http://www.microcontrollerov.net/ind...up-and-use-spi
(сразу перед пунктом 2.1)
Говорится о том, что "ведущее устройство для того, чтобы получить данные из ведомого устройства, должно послать данные ведомому устройству - для чтения данных с датчика необходимо послать датчику произвольные данные"
Ведь я то надеялся вывод с МК типа MOSI вообще не использовать, а вроде бы как нужно.
???
|
MOSI не обязательно подключать если только читаете, главное чтобы шли тактовые импульсы по SCK и ведомый будет выставлять данные.
По поводу CS, возможно если вы только читаете и устройство всегда выдает фиксированный ответ, может ему и не нужен строб CS. Но я таких устр-в не знаю. С теми с которыми имел дело, EEPROM, DAC, RF и тп всем для записи/чтения нужен CS. То есть когда вы начинаете передавать данные ведомому оно принимает их в свой сдвигающий регистр, после окончания передачи вы переводите CS в 1, что ведомым расценивается как окончание передачи и выполняется какое-то действие, например в EEPROM после этого происходит запись.
|
|
|
|
08.02.2010, 23:16
|
|
Вид на жительство
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
При использовании сименсовского экрана я в библиотеки ставлю вот такую функцию:
PHP код:
|
void SoftSPI_write(char SPI_Data_Byte, char SPI_data_mode)
{
//SPI_data_mode - Отправляем комманды (value 1) Или данные (any other than 1)
char SPICount; // Счетчик для отправки 8 бит
lcd_port.LCD_CS = 1; // Убедимся что до выбора устройства у нас CS будет в 1
lcd_port.LCD_SCK = 0; // А синхропиналка в 0
if (SPI_data_mode==1) // Шлем данные или команды?
lcd_port.LCD_RESET=1;
else
lcd_port.LCD_RESET=0;
lcd_port.LCD_CS = 0; // Выбираем раба на шине SPI
for (SPICount = 0; SPICount ‹ 8; SPICount++) // Крутим отправку 8 бит
{
if (SPI_Data_Byte & 0x80) // Что у нас там в нашем байте 1 или 0 сейчас в очереди?
lcd_port.LCD_MOSI = 1; // Ставим ногу MOSI в нужное состояние
else
lcd_port.LCD_MOSI = 0;
lcd_port.LCD_SCK = 1; // Перекидываем синхропиналку
lcd_port.LCD_SCK = 0;
SPI_Data_Byte ‹‹= 1; // Сдвигаем наш байт влево на копеечку ()
} // И крутим пока не выйдут все 8 бит
lcd_port.LCD_CS = 1; // Отрываем рабу голо...отключаем его из цепи выбора
lcd_port.LCD_MOSI = 0; // Правильно завершаем работу
}
|
Только на вывод, но работает шустро, практически синхронно с самим МК
Единственный недостаток - приходится ждать пока не отправится весь байт((((
|
|
|
|
09.02.2010, 18:53
|
|
Частый гость
Регистрация: 07.01.2009
Сообщений: 12
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Люди будьте добры, подскажите, пожалуйста. После того как в программе я занес данные в регистр SPDR (при установленном в регистре SPCR флага включения SPI) сразу начинается идти передача данных через SPI, в этот момент передачи МК продолжает выполнять программу или выполнение программы на время передачи данных останавливается?
|
|
|
|
09.02.2010, 19:18
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Работа регистра не мешает работе вашей программы. Для того периферия и сделана. По окончанию можно вызвать прерывание, чтобы снова наполнить буфер.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:14.
|
|