|
Глюки с I2C |
|
|
|
Apr 29 2018, 14:12
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Глюк 1:
Мне тут нужно было в одном относительно старом проекте, который делался на 4-м Кейле, поменять некоторые дефолтные настройки. К I2C оно не относится, но глюк я поймал именно с I2C! Сейчас на компе только 5-й, 4-го нет. Проц - тот-же F103, к нему по I2C подключена 24LC16.
Запускаю под дебаггером (JLink-Lite подключен, причем настоящий) - ничего не работает, бне входя в деббагер (но с подключенный JLinkом) - все прекрасно работает.
Отставил старую программу, набросал в калокубе с халом только работу с I2C и епромкой - абсолютно тоже самое! Под дебаггаром все функции I2C выходят по таймауту, с еепромки читабтся нули и в нее ничего не пишется. Без входа в дебаггер - все ОК.
WTF?!
Глюк 2: это коллега тут возится с девайсом на STM32L452 и жалуется. Просил спросить: Для тактирования используется MSI + PLL. I2C настроен на 400кгц, тактируется от системного клока.
На одной плате, запускаешь под дебаггером - есть 400кгц. Включаешь ее без дебаггера - там около 40кгц. Из 5-ти плат, так ведет себя одна, 4 другие в - вообще кто в лес, кто по дрова. ТЕперь самое интересное - для проверки "на какой- частоте проц работате," вывели махание ножкой в систике - так там четко, 1мс.
Есть идеи?
|
|
|
|
|
 |
Ответов
|
May 1 2018, 13:36
|

Местный
  
Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264

|
Во многих микроконтроллерах указывается именно период, а не частота I2C. Даже в том же STM32. Использовал I2C в STM32F103, STM32F217, STM32F427 и STM32F429, никаких проблем или нареканий не было, все согласно документации. Осциллографом тыкался - Ровно 100кГц получал на последовательных clock-ах. В режиме контроля clock-stretching между отправляемыми байтами цифровой автомат I2C STM32 вставлял "задержки", отсюда общая частота, замеряемая осциллографом по нескольким сотням пачек - была в 1.5-2 раза меньше, чем 100кГц (запись в EEPROM-память 4-10мс). Главным требованием, из-за несоблюдения которого я промучался довольно долго однажды, это правильная выставка полей предделителя частоты для модуля I2C, а также регистров CCR и TRISE. Там есть ограничения, не помню уже какие. Но когда я ручками выставил все что нужно в эти регистры - все заработало как нужно. Ну а совет сверху очень хороший прозвучал - перевести лапки SCL и SDA в режим push-pull, отключить Slave-устройства от шины и смотреть что на ней. Вот в одном из моих проектов: CODE RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); GPIO_PinAFConfig(GPIO_EXCHANGE_I2C_SCL.GPIO, GPIO_EXCHANGE_I2C_SCL.PinSource, GPIO_AF_I2C1); GPIO_PinAFConfig(GPIO_EXCHANGE_I2C_SDA.GPIO, GPIO_EXCHANGE_I2C_SDA.PinSource, GPIO_AF_I2C1); GPIO_InitTypeDef GPIO_Configure; GPIO_Configure.GPIO_Mode = GPIO_Mode_AF; GPIO_Configure.GPIO_OType = GPIO_OType_OD; GPIO_Configure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Configure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Configure.GPIO_Pin = GPIO_EXCHANGE_I2C_SCL.Pin; GPIO_Init(GPIO_EXCHANGE_I2C_SCL.GPIO, &GPIO_Configure); GPIO_Configure.GPIO_Pin = GPIO_EXCHANGE_I2C_SDA.Pin; GPIO_Init(GPIO_EXCHANGE_I2C_SDA.GPIO, &GPIO_Configure); I2C_InitTypeDef I2C_Configure; I2C_Configure.I2C_ClockSpeed = 100000; I2C_Configure.I2C_Mode = I2C_Mode_I2C; I2C_Configure.I2C_DutyCycle = I2C_DutyCycle_2; I2C_Configure.I2C_OwnAddress1 = HW_EXCHANGE_I2C_ADDRESS_OWN; I2C_Configure.I2C_Ack = I2C_Ack_Enable; I2C_Configure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_Init(I2C1, &I2C_Configure); I2C1->CCR = 225; I2C1->TRISE = 60; I2C1->FLTR = 0x1F;
I2C_Cmd(I2C1, ENABLE); Частота на APB1 45МГц, PLL заведен от внешнего HSE, fHCLK = 180МГц. fPCLK1 = fHCLK/4 = 45МГц. На выходе I2C получаю 100кГц.
Сообщение отредактировал Arlleex - May 1 2018, 13:42
|
|
|
|
Сообщений в этой теме
Allregia Глюки с I2C Apr 29 2018, 14:12 HardEgor Цитата(Allregia @ Apr 29 2018, 21:12) Ест... Apr 29 2018, 15:19 Allregia Цитата(HardEgor @ Apr 29 2018, 16:19) Как... Apr 29 2018, 17:24  aaarrr Цитата(Allregia @ Apr 29 2018, 20:24) Нап... Apr 29 2018, 17:36   Allregia Цитата(aaarrr @ Apr 29 2018, 18:36) Напри... Apr 29 2018, 18:17    aaarrr Цитата(Allregia @ Apr 29 2018, 21:17) Это... Apr 29 2018, 19:21     serglg Цитата(aaarrr @ Apr 30 2018, 01:21) Да дл... Apr 30 2018, 04:23     jcxz Цитата(aaarrr @ Apr 29 2018, 22:21) Тольк... Apr 30 2018, 05:22      aaarrr Цитата(jcxz @ Apr 30 2018, 08:22) А други... Apr 30 2018, 10:47  HardEgor Цитата(Allregia @ Apr 30 2018, 00:24) А ч... Apr 30 2018, 10:33   Allregia Цитата(HardEgor @ Apr 30 2018, 11:33) Так... Apr 30 2018, 11:01    HardEgor Цитата(Allregia @ Apr 30 2018, 18:01) Кол... Apr 30 2018, 11:33 ViKo Сделал работу i2c для некоего мелкого STM32 (конкр... Apr 30 2018, 04:33 Arlleex Да ни при чем тут барьеры... Не надо никаких прогр... Apr 30 2018, 07:40 Allregia Цитата(Arlleex @ Apr 30 2018, 08:40) Каса... Apr 30 2018, 07:44  jcxz Цитата(Allregia @ Apr 30 2018, 10:44) К т... Apr 30 2018, 08:04 KnightIgor Цитата(Allregia @ Apr 29 2018, 15:12) Мне... Apr 30 2018, 15:08 serglg Цитата(KnightIgor @ Apr 30 2018, 21:08) С... May 1 2018, 04:52  Allregia Цитата(serglg @ May 1 2018, 05:52) Когда ... May 1 2018, 10:22   k155la3 Цитата(Allregia @ May 1 2018, 13:22) . . ... May 1 2018, 10:52   HardEgor Цитата(Allregia @ May 1 2018, 17:22) Т.е.... May 1 2018, 16:18 ViKo Допустимый диапазон частот на входе PLL описан в д... May 1 2018, 10:37 Allregia Цитата(ViKo @ May 1 2018, 11:37) Допустим... May 1 2018, 11:05  jcxz Цитата(Allregia @ May 1 2018, 14:05) И за... May 1 2018, 11:15   Allregia Цитата(jcxz @ May 1 2018, 12:15) "Об... May 1 2018, 11:26    k155la3 Цитата(Allregia @ May 1 2018, 14:26) . . ... May 1 2018, 11:29     Allregia Цитата(k155la3 @ May 1 2018, 12:29) Захва... May 1 2018, 11:33    jcxz Цитата(Allregia @ May 1 2018, 14:26) ... May 1 2018, 12:22     Allregia Цитата(jcxz @ May 1 2018, 13:22) Если Вам... May 1 2018, 12:52      jcxz Цитата(Allregia @ May 1 2018, 15:52) Вас ... May 1 2018, 17:10       Allregia Цитата(jcxz @ May 1 2018, 18:10) ЦитатаВа... May 1 2018, 17:17  k155la3 Цитата(Allregia @ May 1 2018, 14:05) . . ... May 1 2018, 11:20 aaarrr Цитата(Arlleex @ May 1 2018, 16:36) GPIO_... May 1 2018, 14:00  Arlleex Цитата(aaarrr @ May 1 2018, 17:00) Зачем?... May 1 2018, 14:16   AVI-crak Кхм...
хотел скорости, а получил звон на линии...... May 1 2018, 14:37 Allregia Цитатаотсюда общая частота, замеряемая осциллограф... May 1 2018, 14:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|