Jump to content

    
Sign in to follow this  
virtuality

Описание SPI I2C и др.

Recommended Posts

Спасибо за ответ. Почему она тогда в отсоединённом состоянии (от мастера) показывает 0,5 В? Люди советуют делать подтяжку на +5 В резистором 10к. Попробовал, но фронты сильно завалены.

Share this post


Link to post
Share on other sites
Спасибо за ответ. Почему она тогда в отсоединённом состоянии (от мастера) показывает 0,5 В? Люди советуют делать подтяжку на +5 В резистором 10к. Попробовал, но фронты сильно завалены.

Потому что рекомендуется делать подтяжку на стороне мастера, иначе, паралельное включение подтяжек на слейвах приведет к малому сопротивлению, которое мастер не сможет прокачать.

Share this post


Link to post
Share on other sites
Народ, подскажите, может кто знает, какой-нибудь доступный (freeware) инструмент под WinXP, кабель-переходник (желательно USB) с помощью которого можно было бы читать/писать по I2C(типа мастера шины), ну и соответствующий софт позволяющий просто всем этим делом управлять (делать дампы, записывать обратно, анализировать и т.п.) ?

 

Под WinXP не знаю, а под Linux рекомендую i2ctools.

Share this post


Link to post
Share on other sites

Здравствуйте, уважаемые форумчане. Опять куча вопросов про SPI. Точнее про одну из реализаций.

 

Сейчас разбираю, как общаются два устройства (собственно мастер и слэйв) по SPI в третьем режиме. Особенно заинтересовал сигнал Clock. Начало понятное - вначале 1, затем происходит спад с 1 на 0, затем восемь фронтов с 0 на 1. Так вот, там есть ещё один цикл, девятый, по длительности примерно равный всему байту. Фото осциллографа - в пристёжке. Это что - сигнал самосинхронизации? И как его учитывать, если я хочу написать программный слэйв? У меня сейчас сделано определение начала по длительности сигнала, когда 1.

Share this post


Link to post
Share on other sites
Здравствуйте, уважаемые форумчане. Опять куча вопросов про SPI. Точнее про одну из реализаций.

 

Сейчас разбираю, как общаются два устройства (собственно мастер и слэйв) по SPI в третьем режиме. Особенно заинтересовал сигнал Clock. Начало понятное - вначале 1, затем происходит спад с 1 на 0, затем восемь фронтов с 0 на 1. Так вот, там есть ещё один цикл, девятый, по длительности примерно равный всему байту. Фото осциллографа - в пристёжке. Это что - сигнал самосинхронизации? И как его учитывать, если я хочу написать программный слэйв? У меня сейчас сделано определение начала по длительности сигнала, когда 1.

чета фото не видно

Share this post


Link to post
Share on other sites

в середине чипселект?

какая микросхема такие клоки формирует? больше похоже на самопального программного мастер-SPI .

в любом случае никакой самосинхронизации нет в природе. слэйв на прием представляет из себя примитивный сдвиговый регистр. появился чипселект и такты-по каждому такту записывается 1 бит.Тоже самое на передачу. по каждому такту содержимое сдвигового регистра выдвигается наружу на мисо.

Edited by ZASADA

Share this post


Link to post
Share on other sites

Жёлтый – CLK

Розовый - MISO

Зелёный – MOSI

 

 

Показано начало обмена, пока ещё слэйв нули выдаёт.

 

Линии "чипселект" там нет. Поскольку мастер и слэйв "заточены" друг под друга.

Share this post


Link to post
Share on other sites

значит кривая реализация программного мастер-SPI.

и по осциллограмме кажется, что слэйв переводит MISO в 3 состояние по 9 срезу. может там обмен 9 бит?

Edited by ZASADA

Share this post


Link to post
Share on other sites

на укрупненной осциллограмме видно, что 8 бит. мастер пишет 1011 0000, слейв отвечает 0000 0000 и переходит в 3 состояние

лишний такт или ошибка реализации мастера (скорее всего) или специально сделан для самольномого протокола обмена.

на стандартном SPI его быть не должно.

Share this post


Link to post
Share on other sites

Да, спасибо. Я и говорю, что это один из вариантов реализации SPI.

Я вот просто думаю, зачем разработчики это всё сделали. Или это выдержка минимальной необходимой для слэйва паузы или так клоком какой-то управляющий сигнал для слэйва передаётся. Хотя может сам слэйв линию клока захватывает. Аналогично как в I2C.

Share this post


Link to post
Share on other sites

И ещё вопрос интересный. Если писать программный SPI для третьего режима. Там ведь захват данных по фронту клока. А когда мы включаем SPI, мы тоже выставляем на клоке единицу как начальное состояние. Если мы пишем монитор данных, как мы отличим фронт начального состояния от "рабочего" фронта?

 

И ещё вопрос интересный. Если писать программный SPI для третьего режима. Там ведь захват данных по фронту клока. А когда мы включаем SPI, мы тоже выставляем на клоке единицу как начальное состояние. Если мы пишем монитор данных, как мы отличим фронт начального состояния от "рабочего" фронта?

Share this post


Link to post
Share on other sites
И ещё вопрос интересный. Если писать программный SPI для третьего режима. Там ведь захват данных по фронту клока. А когда мы включаем SPI, мы тоже выставляем на клоке единицу как начальное состояние. Если мы пишем монитор данных, как мы отличим фронт начального состояния от "рабочего" фронта?

в нормальном SPI все проблемы с ложными клоками решает сигнал чипселект. Более того, есть много микросхем, которые без чипселекта просто не работают.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this