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

 
 
> Проблема с I2C STM32
6nog
сообщение Apr 18 2016, 13:03
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 14-04-16
Пользователь №: 91 277



Недавно возникла проблема с микросхемой STM32F103C8T6. На новой партии микросхем не заработал старый, уже проверенный код. Как оказалось проблема возникала при инициализации модуля I2C.

Вот проблемный кусок кода:
CODE
void Accel::init()
{
RCC->APB1ENR |= (RCC_APB1Periph_I2C1);//Вкл. тактирование И2Ц
I2C1->CR2 |= 36;//36 MHz входит в модуль I2C

// I2C использует две ноги микроконтроллера, их тоже нужно настроить
GPIOB->CRL &=~(GPIO_CRL_MODE6|GPIO_CRL_MODE7|GPIO_CRL_CNF6|GPIO_CRL_CNF7);
GPIOB->CRL |= (GPIO_CRL_MODE6|GPIO_CRL_MODE7|GPIO_CRL_CNF6|GPIO_CRL_CNF7);
GPIOB->BSRR=GPIO_BSRR_BS6|GPIO_BSRR_BS7;

I2C1->CR1 &= ~0x000F;// I2C mode, Peripheral disable
I2C1->CR1 &= ~0x0400;//No acknowledge returned

I2C1->CR2 |= 36;//36 MHz входит в модуль I2C

I2C1->CCR &= ~0xFFFF;
I2C1->CCR |= 180;// Получаем 100kHz из 36MHz
I2C1->CCR &= ~0xC000; //Standart Master Mode, Fast mode 2/1

I2C1->TRISE = 37;//Maximum rise time 1000;

I2C1->OAR1 &= ~(0x00fe);
I2C1->OAR1 &= ~(0x8000);//7-bit slave address
I2C1->OAR1 |= 0x4000; // Must be configured and kept at 1.
I2C1->OAR1 |= (0x15<<1);//Адрес выставим 0х15 на всякий
I2C1->CR1 |= 0x0001;//Peripheral enable

outBuf.point=0;

TH_INIT();
}

После строчки
GPIOB->CRL &=~(GPIO_CRL_MODE6|GPIO_CRL_MODE7|GPIO_CRL_CNF6|GPIO_CRL_CNF7);
I2C выставляет в регистре статуса состояние шины Busy и больше не меняет его.
Если закомментировать эту строчку всё начинает работать нормально.

Никто не сталкивался с подобной проблемой? Очень странно, что МК из предыдущих партий работали отлично и без комментирования этой строчки.

Сообщение отредактировал IgorKossak - Apr 18 2016, 13:24
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 03:44
Рейтинг@Mail.ru


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