Простой сканер I2C

Feb 19, 2021 00:14

Решил себе сканер шины I2C сделать. Штука совсем простая: можно посмотреть, на каких адресах есть железяки (я только 7-битную адресацию реализую, т.к. 10-битных устройств мне пока не попадалось). Потом можно установить, с каким адресом работать, и читать содержимое регистров (можно скопом до 128 байт за присест) или изменять его (по одному байту за раз).
Собираюсь реализовать интерфейс для BMP180, воткнул его и запустил скан. Получил:

Scan mode 0x77 (119) - found device Scan ends
Дальше решил просто посмотреть содержимое регистров. До 0x7f (включительно) нули, а вот дальше уже всякое разное добро находится. Причем, документированы только регистры, начиная с 0xAA (170), а что там до них - одному производителю известно. Первые 32 байта дублируются (т.е. сначала они идут с адреса 0x80, а потом - с 0xA0). С 0xC0 идут в основном нули, а с 0xF9 опять идет кусок того же, с чего начинается 0x80 и 0xA0.

Что до даташита на BMP180, измерения здесь тоже через одно место проводятся (но еще и данные температуры и давления хранятся в одних и тех же регистрах!). И формула коррекции давления опять похожа на заклинание для вызова дьявола!

железяки, stm32

Previous post Next post
Up