Например TDA7294

Форум РадиоКот • Просмотр темы - stm32f1 cmsis настройка I2C
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Ср мар 03, 2021 09:33:21

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 37 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс авг 16, 2020 18:57:23 
Друг Кота
Аватар пользователя

Карма: 3
Рейтинг сообщений: 122
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3109
Рейтинг сообщения: 0
А что вас интересует? Полностью готовое решение, написанное за вас кем-то другим?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Пт окт 23, 2020 15:28:54 
Встал на лапы

Карма: -2
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 108
Рейтинг сообщения: 0
У F103 есть только одна существенная проблема с I2C.
Цитата:
I2C analog filter may provide wrong value, locking BUSY flag and preventing master mode entry
Description
The I2C analog filters embedded in the I2C I/Os may be tied to low level, whereas SCL and
SDA lines are kept at high level. This can occur after an MCU power-on reset, or during
ESD stress. Consequently, the I2C BUSY flag is set, and the I2C cannot enter master mode
(START condition cannot be sent). The I2C BUSY flag cannot be cleared by the SWRST
control bit, nor by a peripheral or a system reset. BUSY bit is cleared under reset, but it is
set high again as soon as the reset is released, because the analog filter output is still at low
level. This issue occurs randomly.
Note: Under the same conditions, the I2C analog filters may also provide a high level, whereas
SCL and SDA lines are kept to low level. This should not create issues as the filters output
will be correct after next SCL and SDA transition.
Возникает при сильных помехах на I2C (кто-то туда полез тыкать отверткой или пинцетом и куда попало коротить). Решается программно.
Цитата:
Workaround
The SCL and SDA analog filter output is updated after a transition occurs on the SCL and
SDA line respectively. The SCL and SDA transition can be forced by software configuring
the I2C I/Os in output mode. Then, once the analog filters are unlocked and output the SCL
and SDA lines level, the BUSY flag can be reset with a software reset, and the I2C can enter
master mode. Therefore, the following sequence must be applied:
1. Disable the I2C peripheral by clearing the PE bit in I2Cx_CR1 register.
2. Configure the SCL and SDA I/Os as General Purpose Output Open-Drain, High level
(Write 1 to GPIOx_ODR).
3. Check SCL and SDA High level in GPIOx_IDR.
4. Configure the SDA I/O as General Purpose Output Open-Drain, Low level (Write 0 to
GPIOx_ODR).
5. Check SDA Low level in GPIOx_IDR.
6. Configure the SCL I/O as General Purpose Output Open-Drain, Low level (Write 0 to
GPIOx_ODR).
7. Check SCL Low level in GPIOx_IDR.
8. Configure the SCL I/O as General Purpose Output Open-Drain, High level (Write 1 to
GPIOx_ODR).
9. Check SCL High level in GPIOx_IDR.
10. Configure the SDA I/O as General Purpose Output Open-Drain , High level (Write 1 to
GPIOx_ODR).
11. Check SDA High level in GPIOx_IDR.
12. Configure the SCL and SDA I/Os as Alternate function Open-Drain.
13. Set SWRST bit in I2Cx_CR1 register.
14. Clear SWRST bit in I2Cx_CR1 register.
15. Enable the I2C peripheral by setting the PE bit in I2Cx_CR1 register.
Я не считаю что из-за этого стоит отказываться от МК.


Добавлено after 1 minute 8 seconds:
Каким образом это реализовывать?.В инециализации?


Вернуться наверх
 
Друзья! Скоро Новый Год! Китайский! Но мы работаем и в праздники тоже!

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Пт окт 23, 2020 17:02:25 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 47
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 255
Откуда: 69.Ржев
Рейтинг сообщения: 0
перепишите эту процедуру в понятных Вам терминах и Вы поймете что к параметрам инита это никакого отношения не имеет.
протокол проверки линий перед тем как вновь поднять интерфейс.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Пт окт 23, 2020 22:00:28 
Встал на лапы

Карма: -2
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 108
Рейтинг сообщения: 0
У F103 есть только одна существенная проблема с I2C.
Цитата:
I2C analog filter may provide wrong value, locking BUSY flag and preventing master mode entry
Description
The I2C analog filters embedded in the I2C I/Os may be tied to low level, whereas SCL and
SDA lines are kept at high level. This can occur after an MCU power-on reset, or during
ESD stress. Consequently, the I2C BUSY flag is set, and the I2C cannot enter master mode
(START condition cannot be sent). The I2C BUSY flag cannot be cleared by the SWRST
control bit, nor by a peripheral or a system reset. BUSY bit is cleared under reset, but it is
set high again as soon as the reset is released, because the analog filter output is still at low
level. This issue occurs randomly.
Note: Under the same conditions, the I2C analog filters may also provide a high level, whereas
SCL and SDA lines are kept to low level. This should not create issues as the filters output
will be correct after next SCL and SDA transition.
Возникает при сильных помехах на I2C (кто-то туда полез тыкать отверткой или пинцетом и куда попало коротить). Решается программно.
Цитата:
Workaround
The SCL and SDA analog filter output is updated after a transition occurs on the SCL and
SDA line respectively. The SCL and SDA transition can be forced by software configuring
the I2C I/Os in output mode. Then, once the analog filters are unlocked and output the SCL
and SDA lines level, the BUSY flag can be reset with a software reset, and the I2C can enter
master mode. Therefore, the following sequence must be applied:
1. Disable the I2C peripheral by clearing the PE bit in I2Cx_CR1 register.
2. Configure the SCL and SDA I/Os as General Purpose Output Open-Drain, High level
(Write 1 to GPIOx_ODR).
3. Check SCL and SDA High level in GPIOx_IDR.
4. Configure the SDA I/O as General Purpose Output Open-Drain, Low level (Write 0 to
GPIOx_ODR).
5. Check SDA Low level in GPIOx_IDR.
6. Configure the SCL I/O as General Purpose Output Open-Drain, Low level (Write 0 to
GPIOx_ODR).
7. Check SCL Low level in GPIOx_IDR.
8. Configure the SCL I/O as General Purpose Output Open-Drain, High level (Write 1 to
GPIOx_ODR).
9. Check SCL High level in GPIOx_IDR.
10. Configure the SDA I/O as General Purpose Output Open-Drain , High level (Write 1 to
GPIOx_ODR).
11. Check SDA High level in GPIOx_IDR.
12. Configure the SCL and SDA I/Os as Alternate function Open-Drain.
13. Set SWRST bit in I2Cx_CR1 register.
14. Clear SWRST bit in I2Cx_CR1 register.
15. Enable the I2C peripheral by setting the PE bit in I2Cx_CR1 register.
Я не считаю что из-за этого стоит отказываться от МК.


Добавлено after 1 minute 6 seconds:
Каким образом это можно реализовать.До настроек битов шины или как?

Добавлено after 17 minutes 4 seconds:
перепишите эту процедуру в понятных Вам терминах и Вы поймете что к параметрам инита это никакого отношения не имеет.
протокол проверки линий перед тем как вновь поднять интерфейс.

Вы имеете ввиду.Перед СтартоМ?


Вернуться наверх
 
Запускаем новый BLE 5.2-чип BlueNRG-LP от STMicroelectronics

Любая разработка начинается с чтения документации и изучения доступных средств разработки. Данный материал целиком посвящен средствам разработки, включая детальные инструкции по запуску вашего первого приложения на BlueNRG-LP. Описана работа с отладкой STEVAL-IDB011V1, набором инструментов и пакетом ПО позволяющим разработчику быстро войти в курс дела.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс окт 25, 2020 11:56:51 
Встал на лапы

Карма: -2
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 108
Рейтинг сообщения: 0
И ещё один вопрос Check SCL and SDA High level in GPIOx_IDR.
4. Configure the SDA I/O as General Purpose Output Open-Drain, Low level (Write 0 to
GPIOx_ODR).
5. Check SDA Low level in GPIOx_IDR.
6. Configure the SCL I/O as General Purpose Output Open-Drain, Low level (Write 0 to
GPIOx_ODR).
7. Check SCL Low level in GPIOx_IDR.
Это что это SDA SCL выходы на входы настроить?


Вернуться наверх
 
Революция в силовой электронике. Начало

Что привлекает в SiC по сравнению с кремнием, и какие особенности делают компоненты SiC часто используемыми, несмотря на более высокую стоимость в сравнении с кремниевыми высоковольтными устройствами? – Объясняет специалист ведущего разработчика силовых приборов из карбида кремния, компании Infineon.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс окт 25, 2020 12:13:31 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 147
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1184
Откуда: Баку
Рейтинг сообщения: 0
Там же написано "Output open-drain". Какой ещё вход?

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс окт 25, 2020 13:16:43 
Встал на лапы

Карма: -2
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 108
Рейтинг сообщения: 0
l in GPIOx_IDR регистр входа? Или я не так понимаю?


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс окт 25, 2020 16:42:50 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 47
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 255
Откуда: 69.Ржев
Рейтинг сообщения: 0
уже сколько раз у Вас спросили - Вы rm на камень вообще открывали?

раздел General-purpose and alternate-function I/Os (GPIOs and AFIOs)
(есть картинки)
SDA, SCL - линии системы i2c
в кубе или в даташите на конкретный камень можно увидеть на какие ножки мс приходятся.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс окт 25, 2020 18:41:14 
Встал на лапы

Карма: -2
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 108
Рейтинг сообщения: 0
Открывал конечно.GPIOx_IDR но вот это мне не совсем понятно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс окт 25, 2020 19:49:08 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
И что конкретно непонятно? Буквы незнакомые?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс окт 25, 2020 20:22:50 
Встал на лапы

Карма: -2
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 108
Рейтинг сообщения: 0
Это регистр входа .А у нас альтернативные выходы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс окт 25, 2020 21:51:53 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
Вы где-то видите отключение IDR от входа в AF?
Изображение
Вложение:
image_2020-10-25_214958.png [81.66 KiB]
Скачиваний: 254


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс окт 25, 2020 21:56:48 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 47
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 255
Откуда: 69.Ржев
Рейтинг сообщения: 0
ну отключите АФ на эти ноги,
для работы i2c все равно включите, согласно п.12 этой процедуры.
я так понимаю у Вас не складывается дружба с i2c, и Вы почему-то решили что эта процедура Вам должна помочь, а то что она для решения конкретной (и скорее всего не Вашей) ситуации Вас не интересует.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Сб ноя 21, 2020 07:02:18 
Встал на лапы

Карма: -2
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 108
Рейтинг сообщения: 0
всё равно не работает.
Код:

RCC->APB2ENR|=RCC_APB2ENR_IOPBEN ;
GPIOB->CRL|= GPIO_CRL_CNF7_1 | GPIO_CRL_CNF6_1 | GPIO_CRL_CNF7_0 | GPIO_CRL_CNF6_0 |
GPIO_CRL_MODE7_1 | GPIO_CRL_MODE6_1 | GPIO_CRL_MODE7_0 | GPIO_CRL_MODE6_0;
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
RCC->APB1ENR|= RCC_APB1ENR_I2C1EN;
I2C1->CR1&=~I2C_CR1_SMBUS ;
I2C1->CCR &=~I2C_CCR_FS;


CLEAR_BIT(I2C1->CR1, I2C_CR1_NOSTRETCH);




I2C1->CR2 |=_VAL2FLD(I2C_CR2_FREQ,36);

I2C1->CCR=180;
I2C1->TRISE= 37;
I2C1->OAR1 = I2C_OWNADDRESS1_7BIT;//(36MHz/100KHz/2)
//(1mcs/(1/36MHz)+1)

I2C1->CR1|= I2C_CR1_ACK;
I2C1->CR1|=I2C_CR1_PE;
I2C1->CR1&=~I2C_CR1_PE;
GPIOB->CRL &= ~(GPIO_CRL_CNF6 | GPIO_CRL_CNF7);
GPIOB->CRL |= GPIO_CRL_CNF6_0 | GPIO_CRL_CNF7_0;//2

GPIOB->ODR |= GPIO_ODR_ODR6 | GPIO_ODR_ODR7;
while(!(GPIOB->IDR &(GPIO_IDR_IDR6 | GPIO_IDR_IDR7)));//3

GPIOB->ODR &= ~(GPIO_ODR_ODR7);//4
while(GPIOB->IDR & GPIO_IDR_IDR7 );//5

GPIOB->ODR &= ~(GPIO_ODR_ODR6);//6
while(GPIOB->IDR & GPIO_IDR_IDR6);//7

GPIOB->ODR |= GPIO_ODR_ODR6;//8
while(!(GPIOB->IDR & GPIO_IDR_IDR6));//9

GPIOB->ODR |= GPIO_ODR_ODR7;//10
while(!(GPIOB->IDR & GPIO_IDR_IDR7));//11
//

// PB6 SCL pin
GPIOB->CRL|=GPIO_CRL_CNF6; // 12 alternate function open drain
GPIOB->CRL|=GPIO_CRL_MODE6; // max speed 50MHz

// PB7 SDA pin
GPIOB->CRL|=GPIO_CRL_CNF7; // alternate function open drain
GPIOB->CRL|=GPIO_CRL_MODE7; // max speed 50MHz



I2C1->CR1 |= I2C_CR1_SWRST;//13
I2C1->CR1 &= ~(I2C_CR1_SWRST);//1

SET_BIT(I2C1->CR1, I2C_CR1_PE);
}
Код:

void RCC_init(void)
{
FLASH->ACR |=FLASH_ACR_PRFTBE ;
FLASH->ACR|=FLASH_ACR_LATENCY_2;

RCC->CR |=RCC_CR_HSEON ;
while(!(RCC->CR&RCC_CR_HSERDY ))
{

}
RCC->CR |=RCC_CR_CSSON ;
RCC->CFGR|=RCC_CFGR_PLLSRC;
RCC->CFGR|=RCC_CFGR_PLLXTPRE_HSE;

RCC->CFGR=RCC_CFGR_PLLMULL9;
RCC->CFGR|=RCC_CFGR_HPRE_DIV1; //_VAL2FLD(RCC_CFGR_HPRE,1);
RCC->CFGR|=RCC_CFGR_PPRE1_DIV2 ;//_VAL2FLD(RCC_CFGR_PPRE1,2);
RCC->CFGR|=RCC_CFGR_PPRE2_DIV1; //_VAL2FLD(RCC_CFGR_PPRE2,1);
RCC->CFGR|= RCC_CFGR_ADCPRE_DIV2;
RCC->CR|=RCC_CR_PLLON;
while(!(RCC->CR&RCC_CR_PLLRDY))
{

}

RCC->CFGR|=RCC_CFGR_SW_PLL;
while(!(RCC->CFGR&RCC_CFGR_SWS_PLL ))
{

}
}
Код:
[list][/list]

void NMI_Handler(void)
{
if((RCC->CIR & RCC_CIR_CSSF) != 0) // HSE fail
{
RCC->CIR |= RCC_CIR_CSSC; // Clear CSSF flag

}
}
вот такая тактовая частота.Я знаю что проблема в настройки шины .Но что я ещё не учёл ? Не знаю .Да и stm32f4 без заморочек не запускается.Котики помогите .Что упускаю?Какую настройку?

Добавлено after 5 minutes 29 seconds:
Код:
[*]

#define I2C_REQUEST_WRITE 0x00
#define I2C_REQUEST_READ 0x01
#define I2C_OWNADDRESS1_7BIT 0x00004000U
#define I2C_MODE_I2C 0x00000000U
//----------
__IO uint32_t tmpreg1;
//----------
void I2C_SendByteByADDR(I2C_TypeDef * i2c, uint8_t c,uint8_t addr)
{

i2c->CR1&=~ I2C_CR1_POS;
i2c->CR1|= I2C_CR1_ACK;
i2c->CR1|= I2C_CR1_START;
while (!(i2c->SR1& I2C_SR1_SB)){};
(void) i2c->SR1;

i2c->DR =addr | I2C_REQUEST_WRITE;
while (!(i2c->SR1& I2C_SR1_ADDR)){};
(void) i2c->SR1;
(void) i2c->SR2;

i2c->DR=c;
while (!(i2c->SR1& I2C_SR1_TXE)){};

i2c->CR1|= I2C_CR1_STOP;
}
Функция отправки байта. Она работает .Проверенно в кубе ll библиотека.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Сб ноя 21, 2020 23:26:37 
Встал на лапы

Карма: -2
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 108
Рейтинг сообщения: 0
АУ вы где.? За мышами побижали?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс ноя 22, 2020 14:38:36 
Встал на лапы

Карма: -2
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 108
Рейтинг сообщения: 0
ну отключите АФ на эти ноги,
для работы i2c все равно включите, согласно п.12 этой процедуры.
я так понимаю у Вас не складывается дружба с i2c, и Вы почему-то решили что эта процедура Вам должна помочь, а то что она для решения конкретной (и скорее всего не Вашей) ситуации Вас не интересует.

На stm32f407 всё получилось.А на stm32f103 пока 0.Я три недели болел ковид.
Код:

Код:

int main(void)
{

RCC_init();
init_systimer1();

APB1_GPIO_init();
GPIO_inits();
// I2C_Init();
//LCD_ini();
I2C_Init();
// RCC->APB1ENR&=~ RCC_APB1ENR_I2C1EN;
RCC->APB2ENR &=~RCC_APB2ENR_AFIOEN;
I2C1->CR1&=~I2C_CR1_PE;
GPIOB->CRL &= ~(GPIO_CRL_CNF6 | GPIO_CRL_CNF7);
GPIOB->CRL |= GPIO_CRL_CNF6_0 | GPIO_CRL_CNF7_0;//2

GPIOB->ODR |= GPIO_ODR_ODR6 | GPIO_ODR_ODR7;
while(!(GPIOB->IDR &(GPIO_IDR_IDR6 | GPIO_IDR_IDR7)));//3

GPIOB->ODR &= ~(GPIO_ODR_ODR7);//4
while(GPIOB->IDR & GPIO_IDR_IDR7 );//5

GPIOB->ODR &= ~(GPIO_ODR_ODR6);//6
while(GPIOB->IDR & GPIO_IDR_IDR6);//7

GPIOB->ODR |= GPIO_ODR_ODR6;//8
while(!(GPIOB->IDR & GPIO_IDR_IDR6));//9

GPIOB->ODR |= GPIO_ODR_ODR7;//10
while(!(GPIOB->IDR & GPIO_IDR_IDR7));//11
//

// PB6 SCL pin
// RCC->APB2ENR |=RCC_APB2ENR_AFIOEN;
// RCC->APB1ENR=RCC_APB1ENR_I2C1EN;
RCC->APB2ENR |=RCC_APB2ENR_AFIOEN;
GPIOB->CRL|=GPIO_CRL_CNF6; // 12 alternate function open drain
GPIOB->CRL|=GPIO_CRL_MODE6; // max speed 50MHz

// PB7 SDA pin
GPIOB->CRL|=GPIO_CRL_CNF7; // alternate function open drain
GPIOB->CRL|=GPIO_CRL_MODE7; // max speed 50MHz



I2C1->CR1 |= I2C_CR1_SWRST;//13
I2C1->CR1 &= ~I2C_CR1_SWRST;//1
// RCC->APB1RSTR|=RCC_APB1RSTR_I2C1RST ;
// RCC->APB1RSTR&=~RCC_APB1RSTR_I2C1RST ;
SET_BIT(I2C1->CR1, I2C_CR1_PE);
timer_1();
timer_3();
//init_systimer1();

init_ADC1();

LCD_ini();
// LCD_Clear();

LCD_SetPos(5,1);
LCD_String("String 2");
ADC1->CR2|=ADC_CR2_JEXTSEL_1;
Код:

#include "i2c_user.h"
#include"main.h"
//----------
#define I2C_REQUEST_WRITE 0x00
#define I2C_REQUEST_READ 0x01
#define I2C_OWNADDRESS1_7BIT 0x00004000U
#define I2C_MODE_I2C 0x00000000U
//----------
__IO uint32_t tmpreg1;
//----------
void I2C_SendByteByADDR(I2C_TypeDef * i2c, uint8_t c,uint8_t addr)
{

i2c->CR1&=~I2C_CR1_POS;
i2c->CR1|= I2C_CR1_ACK;
i2c->CR1|= I2C_CR1_START;
while (!(i2c->SR1& I2C_SR1_SB)){};
(void) i2c->SR1;
i2c->DR|= addr | I2C_REQUEST_WRITE;
while (!(i2c->SR1& I2C_SR1_ADDR)){};
(void) i2c->SR1;
(void) i2c->SR2;
//I2C_Write_Byte(c);
i2c->DR|= c;
while (!(i2c->SR1&I2C_SR1_TXE)){};
i2c->CR1|= I2C_CR1_STOP;
}
//----------
void I2C_Init(void)
{
//I2C1 GPIO
RCC->APB2ENR|=RCC_APB2ENR_IOPBEN ;
GPIOB->CRL|= GPIO_CRL_CNF7_1 | GPIO_CRL_CNF6_1 | GPIO_CRL_CNF7_0 | GPIO_CRL_CNF6_0 |
GPIO_CRL_MODE7_1 | GPIO_CRL_MODE6_1 | GPIO_CRL_MODE7_0 | GPIO_CRL_MODE6_0;
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
RCC->APB1ENR|= RCC_APB1ENR_I2C1EN;
I2C1->CR1&=~I2C_CR1_SMBUS ;
I2C1->CCR &=~I2C_CCR_FS;


CLEAR_BIT(I2C1->CR1, I2C_CR1_NOSTRETCH);




I2C1->CR2 |=_VAL2FLD(I2C_CR2_FREQ,36);

I2C1->CCR|=180;
I2C1->TRISE|= 37;
I2C1->OAR1 |= I2C_OWNADDRESS1_7BIT;//(36MHz/100KHz/2)
//(1mcs/(1/36MHz)+1)

I2C1->CR1|= I2C_CR1_ACK;
I2C1->CR1|=I2C_CR1_PE;
}
Не работает.Что не хватает?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f1 cmsis настройка I2C
СообщениеДобавлено: Вс ноя 22, 2020 17:36:10 
Вымогатель припоя
Аватар пользователя

Карма: 15
Рейтинг сообщений: 142
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 648
Откуда: Украина, Киев
Рейтинг сообщения: 0
Я тоже немного приболел, и не могу проверить ваш код.
Вот рабочий код из рабочего проекта:

Запись и чтение 8 и 16 бит данных:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 37 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y