ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 сентября
1542497 Топик полностью
Eddy_Em (16.09.2025 22:47, просмотров: 62) ответил VladislavS. на Что-то ты каким-то "судорогом" занимаешься. Новая реализация I2C практически сама всё делает.
Как оно у тебя работает? Попробовал так же - нет, выдает "busy". 

Т.е. вот так - не работает:

static uint8_t i2c_startr(uint8_t addr, uint16_t nbytes){
    I2C1->CR2 = I2C_CR2_START | (nbytes<<16) | addr | I2C_CR2_AUTOEND | I2C_CR2_RD_WRN;
}

А вот так - работает:

static uint8_t i2c_startr(uint8_t addr, uint16_t nbytes){
    I2C1->CR2 = (nbytes<<16) | addr | I2C_CR2_RD_WRN;
    I2C1->CR2 |= I2C_CR2_START;
    I2C1->CR2 |= I2C_CR2_AUTOEND;
    return 1;
}


Т.е. все-таки "за один присест" нельзя написать и START, и адрес...

eddy-em.livejournal.com github.com/eddyem