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

 
 
 
Reply to this topicStart new topic
> at24cxxx eeprom - i2c проблема при первом запросе
andron86
сообщение Oct 26 2007, 20:41
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Привет всем!

вот скатилась на меня беда, подкинули мне проблему. В общем, есть уже запущенный в производство прибор. Вот тут его составляющие:

Cyclone, Nios 2 (i2c мастер); hwclock (i2c), ad converter(i2c) и at24c512 (i2c).

Для выпуске была разработана тестовая платформа, которую программил коллега.
Тесты в общем элементарные - программируется сам прибор и проверяется вся периферия. Из десяти приборов 8-9 at24с512 еепромов выпадают при первой попытке их запрограммировать (нету ака) - при повторном запуске всё работает. Первый баг я уже нарыл - при залитие софта в cyclone не производился ресет системы - i2с отдыхал. Теперь имеем из 10 новых один вылетает при первой попытке. Что за беда??
i2c 400khz, подтянут 10k, wp деактивируется, адресса в порядке - может здесь что-то?? Думал может еепром soft reset нужен, но с ресетом вывалился в обратную статистику. Занимаюсь этой бедой один день, может чего-то ещё не доглядел. Подскажите пожалуйста куда обратить внимание!

Спасибо!

З.Ы. ещё сам не дебагил, по этому про аск верю коллеге на слово - он в низкоуровневым программировании и в железе бум бум. Он писал аппликацию с использованием готовых функций типа: write_i2, read_i2c c return аcк no ack.

Сообщение отредактировал andron86 - Oct 26 2007, 20:58
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 26 2007, 21:17
Сообщение #2


Гуру
******

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



Во-первых, уменьшите pull-up-ы на шинах SCL и SDA до 1-2кОм. 10кОм для шины 400кГц может быть многовато. Посмотрите осциллографом нарастающие фронты и сравните их длительность с требованиями стандарта The I2C bus specification.
Во-вторых, что за soft reset? После включения устройства рекомендуется "поКлокать" шиной SCL, не содавая START или STOP условий. Не менее 10 тактов. Этот прием позволяет правильно установить аппаратные автоматы I2C в слейвах, не имеющих собственных сигналов тактирования (которые тактируются только от SCL). Как раз при таком "залипании" slave не дает ACK.
В-третьих, откуда ваш коллега брал "аппликацию с использованием готовых функций"? Источник проверенный? Или с какого-нибудь опен-сорсного ресурса скачано? wink.gif
Go to the top of the page
 
+Quote Post
andron86
сообщение Oct 26 2007, 21:45
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(rezident @ Oct 26 2007, 23:17) *
Во-первых, уменьшите pull-up-ы на шинах SCL и SDA до 1-2кОм. 10кОм для шины 400кГц может быть многовато. Посмотрите осциллографом нарастающие фронты и сравните их длительность с требованиями стандарта The I2C bus specification.

Да, про это я сразу же и подумал, но тот кто это проектировал сразу же в ступор обратился с криком «ведь потом всё работает» 08.gif
Цитата(rezident @ Oct 26 2007, 23:17) *
Во-вторых, что за soft reset?

Да с даташеет от без из сходности 08.gif
Цитата
MEMORY RESET: After an interruption in protocol, power loss or system reset, any twowire
part can be reset by following these steps:
(a) Clock up to 9 cycles, (b ) look for SDA high in each cycle while SCL is high and then
(c ) create a start condition as SDA is high.


Цитата(rezident @ Oct 26 2007, 23:17) *
После включения устройства рекомендуется "поКлокать" шиной SCL, не содавая START или STOP условий. Не менее 10 тактов.


wow!!! вот это идея !!!

Спасибо rezident


Цитата(rezident @ Oct 26 2007, 23:17) *
В-третьих, откуда ваш коллега брал "аппликацию с использованием готовых функций"? Источник проверенный? Или с какого-нибудь опен-сорсного ресурса скачано? wink.gif

smile.gif smile.gif Другой коллега писал что-то типа драйвера, но он не на месте, а мне в понедельник в командировку по этому вопросу - вот беда crying.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 26 2007, 21:49
Сообщение #4


Гуру
******

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



Цитата(andron86 @ Oct 27 2007, 03:45) *
wow!!! вот это идея !!!

Дык у вас в даташите под пунктом а) то же самое написано smile.gif
Цитата
(a) Clock up to 9 cycles

Только там "до 9" предлагается, а я рекомендую всегда именно 10 клоков делать.
Go to the top of the page
 
+Quote Post
andron86
сообщение Oct 26 2007, 21:54
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(rezident @ Oct 26 2007, 23:49) *
Дык у вас в даташите под пунктом а) то же самое написано smile.gif

Только там "до 9" предлагается, а я рекомендую всегда именно 10 клоков делать.

А клокать нужно обезательно с рабочей частотой или без разницы.
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 26 2007, 22:11
Сообщение #6


Гуру
******

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



Цитата(andron86 @ Oct 27 2007, 03:54) *
А клокать нужно обезательно с рабочей частотой или без разницы.

Без разницы, но не выше максимально допустимой (400кГц для вашего случая). Вниз ограничения нет, т.к. I2C полностью статическая шина, в отличие, например, от SMBus.
Go to the top of the page
 
+Quote Post
andron86
сообщение Oct 26 2007, 22:17
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(andron86 @ Oct 26 2007, 23:54) *
А клокать нужно обезательно с рабочей частотой или без разницы.

Я спрашиваю это потому, что там такая ситуация. Коллега программирует через Labview, на железо имеет доступ в виде write read :-( . То есть я ему объесняю "можешь пин low/high посадить" - тот - "да" - я ему типа - "зделай такую секуенц" - он делает (щас умру с со смеху lol.gif ) У меня другие проекты, поэтому не хотелось бы в глубь лезть! lol.gif Ну вы представляете себе какие там задержки!!!!

Сообщение отредактировал andron86 - Oct 26 2007, 22:23
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 26 2007, 22:23
Сообщение #8


Гуру
******

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



Цитата(andron86 @ Oct 27 2007, 04:17) *
То есть я ему объесняю "можешь пин low/high посадить" - тот - "да" - я ему типа - "зделай такую секуенц" - он делает (щас умру с со смеху lol.gif )

Да без проблем! Можно хоть после каждого перехода low->high и high->low перекур с дремотой делать biggrin.gif Только питание не снимайте.
Go to the top of the page
 
+Quote Post
andron86
сообщение Oct 26 2007, 22:31
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(rezident @ Oct 27 2007, 00:23) *
Да без проблем! Можно хоть после каждого перехода low->high и high->low перекур с дремотой делать biggrin.gif Только питание не снимайте.

спасибо rezident, буду грабить. Может ещё что в догонку подскажете, а то на производстве не будет возможности выхода в инет crying.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:07
Рейтинг@Mail.ru


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