ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
14 сентября
1542005 Топик полностью
Eddy_Em (Вчера, 22:18, просмотров: 32) ответил Eddy_Em на Блин, действительно на кусок STOP смахивает! А не должно быть: я I2C_CR2_AUTOEND не устанавливаю.
Вот же ядрен батон! Выставляю STOP после записи адреса регистра - получаю абсолютно ту же картинку! Т.е. выходит, что когда мне STOP был не нужен и я не писал AUTOEND, STOP все равно вылезал! 

Что ж за жопа такая?

static uint8_t i2c_startw(uint8_t addr, uint8_t nbytes, uint8_t stop){
    if(!i2c_start(1)) return 0;
    I2C1->CR2 = nbytes << 16 | addr;
    if(stop) I2C1->CR2 |= I2C_CR2_AUTOEND; // autoend
    //else I2C1->CR2 |= I2C_CR2_RELOAD;
    // now start transfer
    I2C1->CR2 |= I2C_CR2_START;
    return 1;
}
eddy-em.livejournal.com github.com/eddyem