kostya-m 0 26 января, 2014 Опубликовано 26 января, 2014 · Жалоба Нет ли у кого примера реализации на TMS320C672x I2C в слейве при обработке через прерывание. В фирменной документации SPRU877e есть "Figure 26. Using Interrupts for Slave-Transmitter/Receiver Operation, Repeat Mode (RM = 1)" где разрисована очень простая схема. Но что-то не работает. Чувствую, что у ТИ, как всегда, опущены мелкие важности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewn 0 26 января, 2014 Опубликовано 26 января, 2014 · Жалоба Нет ли у кого примера реализации на TMS320C672x I2C в слейве при обработке через прерывание. В фирменной документации SPRU877e есть "Figure 26. Using Interrupts for Slave-Transmitter/Receiver Operation, Repeat Mode (RM = 1)" где разрисована очень простая схема. Но что-то не работает. Чувствую, что у ТИ, как всегда, опущены мелкие важности. На сайте Spectrum Digital были примеры для EVM DM6437 (и для других) по использованию I2C, только в режиме мастера. Слейв уж очень необычно, не аудиочип же мастер? :) OAR проинициализирован? Адрес сдвигается на бит в левую сторону, 0х10 - будет 0х20 или что-то в этом роде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kostya-m 0 26 января, 2014 Опубликовано 26 января, 2014 · Жалоба Я использую два канала I2C. Один в мастере, смотрит на подконтрольные устройства. Он работает бит поллингом и хорошо. А второй смотрит на ARM процессор, который всем рулит. Вот для него и потребовалось. В документации приведена такая простая схема его обслуживания, но что-то не достказано. Мастер и слейв по реализации очень сильно отличаются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewn 0 26 января, 2014 Опубликовано 26 января, 2014 · Жалоба второй смотрит на ARM процессор, который всем рулит. Вот для него и потребовалось.Понятно. Можно ещё посмотреть описание контроллера I2C для DM6437/DM6446/DM6467 (SPRU991/SPRUE27/SPRUER0), в этих документах расписан алгоритм в режиме слейв. SPRU991C.pdf - 2.11.2 Configuring the I2C in Slave Receiver and Transmitter Mode. Главное - это правильный адрес в OAR, и настройка контроллера для начала работы всегда режим слейв-ресивер. Получив команду от мастера (AAS) в ISR принимается решение, что делать - принимать данные - тогда настройки режима ресивера остаются, данные принимаются, иначе если команда на предачу данных, контроллер перепрограммируется в режим трансмиттера и данные передаются мастеру. В обоих случаях ISR должна сообщить программе, что запрошена передача данных по IIC - флажком или семафором. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kostya-m 0 26 января, 2014 Опубликовано 26 января, 2014 · Жалоба Большое спасибо, Андрей за советы. Проблема решилась - был непропай в ноге контроллера и SCL не доходил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewn 0 26 января, 2014 Опубликовано 26 января, 2014 · Жалоба Проблема решилась - был непропай в ноге контроллера и SCL не доходил:) Спасибо, и я теперь повеселился :) (А сколько раз себе говорил - спроси сначала "ток включили?") Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться