У меня возникла неприятная проблема с кастомной платой, на которой стоит микроконтроллер ATSAMD21G18A. Я пытаюсь подключить чип ATECC508A через I²C, но он просто не хочет определяться.
На линии SDA и SCL у меня стоят подтягивающие резисторы по 4.7kΩ, так что, по идее, с этим должно быть все в порядке. Но, к сожалению, никакой связи с ATECC508A у меня нет.
Пробовал различные бутлоадеры, но тоже не принесло успеха, сам адрес в библиотеках тоже пробовал менять (0x60)
Код я использую обычный i2c scanner:
#include <Wire.h>
void setup()
{
Wire.begin();
SerialUSB.begin(9600);
while (!SerialUSB); // Wait for Serial to be ready
SerialUSB.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
SerialUSB.println("Scanning...");
nDevices = 0;
for (address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
SerialUSB.print("I2C device found at address 0x");
if (address < 16)
SerialUSB.print("0");
SerialUSB.print(address, HEX);
SerialUSB.println(" !");
nDevices++;
}
else if (error == 4)
{
SerialUSB.print("Unknown error at address 0x");
if (address < 16)
SerialUSB.print("0");
SerialUSB.println(address, HEX);
}
}
if (nDevices == 0)
SerialUSB.println("No I2C devices found\n");
else
SerialUSB.println("done\n");
delay(5000); // Wait 5 seconds for next scan
}
Так-же прикладываю скрины схемы, плата штамповалась в pcbway
Не до конца понял что имеется ввиду, если имеется ввиду что прописано в variant.h файле для платы которую я выбираю в arduino ide, то вот такие значнеия там:
Я дилетант в этих вопросах, и только набираюсь опыта, понимаю ваше недоумения касательно пинов 20 21 в либе и 22-23 на плате, но на каком-то из форумов я вычитал что для чипов samd21 ардино ide сам понимает пины для чипов sam21g и что 20, 21 пины == 22, 23.
Поправьте меня если ошибаюсь, я сейчас попробую изменю пины в variant и попробую
Эх, к сожалению осциллографа еще не приобрел к себе в арсенал, пока только набираюсь знаний и опыта. Спасибо за попытку помощи, буду дальше капать, может кто еще идейку подкинет что может быть, а то уже 3 день в поисках зацепок))
Опять же таки, возможно, глупый вопрос, но у меня есть прогармматор jlink mini, возможно ли как-то им дополнительно отдебажить есть ли какие-то сигналы на пинах sda scl?
Вместо того чтобы исходник аддона менять, лучше пины на плате смени. Пины 20 и 21 куда-нибудь выведены? Если да -подключи ATECC508A к ним и пробуй.
Если заработает - будешь думать как треки на плате переделать.
Что за идиотизм разводить плату, не протестировав работу на макетке???
Проверьте мультиметром наличие подтяжки, там случаем перемычку паять не надо?
Есть полный даташит на ATECC508A, глянул, там целый день разбираться можно.
Кстати , микросхема может работать также в режиме
Single-Wire Interface mode , выбирается записью бита в EEPROM. Так что с этим может быть проблемма связана
Я выше и предложил её с какой-нибудь обычной ардуиной попробовать. К его контроллеру тоже можно что-нибудь простенькое с I2C подключить. А то автор сразу два неизвестных устройства соединяет - всё не работает. Грешит почему-то на одно. А может виновато другое? А может оба? Сначала надо бы их порознь тестировать.