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

 
 
> Глюки с I2C
Allregia
сообщение Apr 29 2018, 14:12
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 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мс.

Есть идеи?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Arlleex
сообщение May 1 2018, 13:36
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 1 2018, 14:00
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Arlleex @ May 1 2018, 16:36) *
GPIO_Configure.GPIO_Speed = GPIO_Speed_100MHz;

Зачем?
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 1 2018, 14:16
Сообщение #4


Местный
***

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



Цитата(aaarrr @ May 1 2018, 17:00) *
Зачем?

Сталкивался один раз с тем, что на Slow-режиме ногодрыг был не таким, каким ожидал. Поэтому всегда ставлю максимум, чтобы хотя бы GPIO отмести из подозреваемых. Для I2C да, возможно, не важно. Выделил для того, чтобы ТС попробовал именно так. Тяжело что-то советовать без целевого авторского железа laughing.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - AVI-crak   Кхм... хотел скорости, а получил звон на линии......   May 1 2018, 14:37
- - Allregia   Цитатаотсюда общая частота, замеряемая осциллограф...   May 1 2018, 14:49


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 15:26
Рейтинг@Mail.ru


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