Skip to content

Nano PI NEO -> Linux i2c -> MCP23017 -> TFT ILI9486 & Thermo MAX6675

Notifications You must be signed in to change notification settings

allacmc/NanoPI-NEO-I2C-

 
 

Repository files navigation

NanoPI-NEO-I2C

Не используйте чаcтоту 100kHz- можно но медленно )). Тем более идет новый стандарт MIPI I3C Basic. ожидаемая частота 12.5 MHz

А пока можно использовать - заложенные в MCP23017 и MCP23018 возможности до 3.4 MHz шине.

Сборка GCC gcc -o example stanok.c -lrt -pthread

Сборка Musl gcc -DStanok=2 stanok.c -o example

Nano Pi Neo согласно даташита чип H3 может работать по шине i2c 400 kHz, в реальности в Linux может работать

до 1.7Mhz c MCP23017 до 3.4Mhz c MCP23018 (open drain)

Для этого в дереве устройств надо выставить частоту ))

i2c@1c2ac00 {	
compatible = "allwinner,sun6i-a31-i2c";
reg = <0x1c2ac00 0x400>;
interrupts = <0x0 0x6 0x4>;
clocks = <0x3 0x3b>;
resets = <0x3 0x2e>;
pinctrl-names = "default";
pinctrl-0 = <0x17>;
status = "okay";
#address-cells = <0x1>;
#size-cells = <0x0>;
clock-frequency = <1700000>;
}; // 1.7 Mhz для MCP23017

или clock-frequency = <3400000>; - for MCP23018

  это работает , it's work !! ))

Библиотека для работа с шиной I2C, а в частности с микросхемой MCP23017 до 1.7 Mhz и MCP23018 до 3.4 Mhz

MCP23017.h

Пример экран TFT(480x320) 3.5 inch ili9486, интерфейс I2C (через MCP23017 или MCP23018), можно подключить нескольких экранов к одной плате Nano PI Neo, библиотека tft_i2c.h

Работа на частоте от 400kHz до 1,7 MHz через MCP23017 и до 3.4Mhz MCP23018

Схема подключение TFT экранов на чипе ILI9486 через MCP23018 к шине I2C на скорости 3.4 Mhz , например к Nano PI NEO. (Connection of TFT screens on the ILI9486 chip via MCP23018 to the I2C bus at a speed of 3.4 Mhz, for example, to the Nano PI NEO in Linux).


Подключение к MCP23017 нескольких чипов температуры MAX6675 можно до 6 штук ( температура считывается со всех одновременно. Принципе количество можно увеличить до 14 штук одновременно - но зачем ))

Схема подключения - желательно через оптопары H11L1 или ADUM1201


bugs errata mcp23017 site microchip

Question On MCP23008 device, if the GPIO7 input changes, or on MCP23017 if GPIOA7 or GPIOB7 input changes while the I2C master is reading this bit from the GPIO register, the SDA signal can change and look like a STOP condition on the bus. Answer The solution is to use a different pin as input, no other workaround available now.

Вопрос

На устройстве MCP23008, если изменяется вход GPIO7, или на MCP23017, если изменяется вход GPIOA7 или GPIOB7, когда мастер I2C считывает этот бит из регистра GPIO, сигнал SDA может измениться и выглядеть как состояние STOP на шине.

Ответ

Решение состоит в том, чтобы использовать другой вывод в качестве входа, другого обходного пути сейчас нет.


Из-за особенностей внутренней реализации MCP23017 и MCP23018 (или бага в последней), они ведут себя по разному при записи в один регистр по кругу (режим bit5 SEQOP = 1) , если писать напрямую в защелки регистр OLATA(B), то mcp23017 ведет себя адекватно и ожидаемо, пишет по кругу в данные регистры, но mcp23018 - сходит с ума )), записав первую пару значений, перескакивает на следующую пару регистров и пишет все остальные данные в эти регистры, а так как это последния пара регистров OLATA(B) - то все остальные данные попадают в первыую пару регистров IODIRA(B) - отвечающая за выставление направление портов - и в этоге становится весело и этот баг нигде не описан.

*Поэтому наверно не стоит писать напрямую в регистры OLATA(B) по кругу, для этого лучше работать c GPIOA(B), в итоге получается примерно адекватная реакция от MCP23018 - он исходя из логики описанной работы , записывает первую пару значений GPIOA(B), и затем все остальное в OLATA(B). примерно как то так))


Интересный чип TTP229-LSF подключатся 16 сенсорных кнопок (даташит в папке), работает по i2C - даташите написано 400 kHz - в реальности работает и 1 Mhz,


24 пина которые можно использовать на NanoPI NEO v1.4 (из них 2шт. I2C0, I2C1 ).

PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA11,PA12,PA17,PA18,PA19,PA20,PA21

PC0,PC1,PC2,PC3 (SPI)

PG6,PG7,PG8,PG9,PG11

PL11

PA10 - Status LED

PL10 - Power LED


Тест проeкт платы https://easyeda.com/AlekssII/copy-plk3_copy_copy_copy_copy_copy_copy_copy_copy_copy

About

Nano PI NEO -> Linux i2c -> MCP23017 -> TFT ILI9486 & Thermo MAX6675

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 94.8%
  • HTML 5.2%