ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
14 сентября
1542013 Топик полностью
Eddy_Em (Вчера, 23:13, просмотров: 23) ответил Eddy_Em на Странная осциллограмма I2C у STM32F303CBT6.
Какой же я дебил!.. Охренеть! 

Ведь я первым делом STOP прописывал в регистр, а потом START делал!

Сделал вот так, и все хорошо:

static uint8_t i2c_startr(uint8_t addr, uint8_t nbytes, uint8_t busychk){
    if(!i2c_chk(busychk)) return 0;
    // read N bytes
    I2C1->CR2 = (nbytes<<16) | addr /*| I2C_CR2_AUTOEND*/ | I2C_CR2_RD_WRN;
    I2C1->CR2 |= I2C_CR2_START;
    I2C1->CR2 |= I2C_CR2_AUTOEND;
    return 1;
}

(в оригинале закомментированный I2C_CR2_AUTOEND был). В общем, не обрисовали в мануале эту ситуацию - и сиди, гадай…

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