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

 
 
> Помогите с I2C для MSP430F248
Vladimir_T
сообщение Jun 19 2010, 16:35
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Здравствуйте, уважаемые коллеги, помгите разобраться с I2C для MSP430F248. Мне нужна поддержка I2C на канале USCI B1. MSP сконфигурирован мастером. Передача массива в I2C расширитель, типа PCF8575, по прерываниям от передатчика работает нормально. А вот прием по прерывания не идет. Вся периферия сконфигурирована, а мастер даже не стартует. Если у кого-нибудь найдется немного времени, чтобы взглянуть в приведенный код, то буду очень благодарен за помощь.
Прикрепленные файлы
Прикрепленный файл  i2c.rar ( 1.21 килобайт ) Кол-во скачиваний: 45
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
rezident
сообщение Jun 19 2010, 18:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Я ни разу не использовал аппаратный I2C в MSP430 и поэтому сильно не разбирался с его работой. Но просмотрев беглым взглядом ваш исходник, заметил, что на приеме у вас разрешены оба прерывания: и от передатчика и от приемника. Но приоритет прерывания приемника выше, чем у передатчика. Нет ли здесь подводных камней? Может разрешением прерывания от приемника надо в прерывании от передатчика управлять? Ведь мастер сначала передает байт аппаратной адресации слейва и только затем принимает байт от слейва.
Go to the top of the page
 
+Quote Post
Vladimir_T
сообщение Jun 20 2010, 17:07
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Спасибо за ответ, из документации я понял, что бит UCTR управляет режимом передатчика: т.е если он устанвлен, то режим передатчика, в противном случае - приемник. Для этих режимов стартовая и стоповая последовательности отрабатываются одинаково, разница в передаче и приеме. Приемник отрабатывает и по готовности выставляет прерывание, предварительно отрабатывает стартовую последовательность и получает ACK. Но вот приемник даже старта не отрабатывает, не пойму почему. Прерывания, действительно, устанавливаются друг за другом: сначала от передатчика, затем от приемника. Пробовал в тестовой функции крититься только в приеме, пока ничего. Буду разбираться, найду ответ, доложу.
Go to the top of the page
 
+Quote Post
Vladimir_T
сообщение Jun 29 2010, 15:53
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Привожу пример реализации I2C от TI. Но реализация приема по прерыванию сделана совсем не так я понимал, да и не так как описано в даташитах.
Go to the top of the page
 
+Quote Post
Vladimir_T
сообщение Jun 29 2010, 15:53
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Привожу пример реализации I2C от TI. Но реализация приема по прерыванию сделана совсем не так я понимал, да и не так как описано в даташитах.

Прикрепленные файлы
Прикрепленный файл  slaa382.zip ( 9.5 килобайт ) Кол-во скачиваний: 38
Прикрепленный файл  slaa382.pdf ( 166.82 килобайт ) Кол-во скачиваний: 60
 
Go to the top of the page
 
+Quote Post

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

 


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


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