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

 
 
> Глюки с 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

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 18:01
Рейтинг@Mail.ru


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