Здравствуйте, я новичок в этой сфере. Я имею stm32f103c8t6 и сенсорную клавиатуру TTP229BSF. Проблема в том, что модуль передает только единицы. Модуль рабочий проверял на ардуино.
Согласно даташиту
для обмена данными следует совершить следующие действия (есть несколько режимов работы, но я пытаюсь разобраться именно с этим ):
также привожу тайминги
Теперь о соединениях. Контакт SDO я подключил к порту B пину номер 7, SCL к порту B пину номер 6. Минус к минусу плюс к 5V.
Теперь о коде.
функция main:
я стараюсь сделать все по даташиту, но на 43 строке data всегда равна 0xffff.
Вот полный код:
main.c
main.h
Пожалуйста подскажите в чем неправ 😭 😭 😭.
Доброго времени суток!
На самом деле первая мысль - осциллографом посмотреть сигналы на STM и на Arduino и сразу будет видно, в чем разница.
@aveal у меня есть дешёвый осциллограф, как раз ещё не пользовался. Спасибо посмотрю.
Интересное замечание, когда подключаю осциллограф к минусу и к ножке SCL все магическим образом начинает работать.
Работает только если осциллограф включен. Попробовал поставить резисторы (от 1Мом до 8Мом) не помогло.
@l0patich На всякий случай уточняю - TTP229BSF от 3.3В питается? И навскидку - при настройке GPIO поставить Speed в GPIO_SPEED_FREQ_VERY_HIGH.
@aveal Сработало! Спасибо большое. Если не трудно можете сказать почему, клавиатура вроде бы толерантна к 5 вольтам.
@l0patich Там напряжение логической единицы получается от 4 до 5В при питании от 5В, а у stm соответственно 3.3В только: