Вики и преодопределенные имена пинов

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Do6p9k, 31 мар 2016.

  1. Do6p9k

    Do6p9k Нерд

    Просьба к представителям Амперки дополнить Вики информацией по предопределенным именам пинов, точнее где ее смотреть. Дело в том, что в Вики вы пишете "pin", но не ясно что именно в качестве этого параметра вводить.
    Примеры ссылок на страницы Вики:
    http://wiki.amperka.ru/js:builtins
    http://wiki.amperka.ru/js:pin
    http://wiki.amperka.ru/js:serial

    Мне удалось найти информацию по именам пинов только на рисунке распиновки Iskra JS тут http://wiki.amperka.ru/js:iskra_js
    Так же помогла надпись "GPIO-пин на Iskra JS. Под этим именем вы можете обратиться к пину из программы".

    Лично мне эта информация потребовалась, когда решил разобраться в коде, который вы использовали в проекте "Умный лабиринт для крыс на Iskra JS".
    И вроде все было хорошо пока я не дошел до строки
    Код (Javascript):
    SPI2.setup({baud: 3200000, mosi: B15, miso: B14, sck: B13});
    Как оказалось можно в коде использовать не только имена пинов с платы Iskra JS, но и имена пинов на микроконтроллере.

    Может кому-то это все покажется само собой разумеющимся, но, мне думается, такие базовые вещи должны быть описаны ;)

    И да, раньше с программированием никаких МК не сталкивался, и "имя нам - легион" :)
     
  2. Do6p9k

    Do6p9k Нерд

    И небольшой вопрос на засыпку.
    Откуда узнать какую скорость соединения указывать при работе с SPI-интерфейсом? :)
     
  3. nailxx

    nailxx Официальный Нерд Администратор

    Про пины вы хорошо заметили. Подумаем над самым элегантным и очевидным способом объяснить их. Спасибо!

    Скорость нужно указывать ту, на которую рассчитана та периферия, с которой вы хотите работать. Если не укажете явно, скорость будет принята за 100000 бод. Это разумное умолчание для большей части железок.
     
  4. Do6p9k

    Do6p9k Нерд

    Прошу помочь разобраться в этой тонкости, точнее подсказать куда смотреть на конкретном примере.
    Ниже кусок кода из проекта, в котором указывается скорость соединения Iskra JS с платой расширения Ethernet Shield 2:
    Код (Javascript):
    // Настраиваем соединение с Ethernet Shield 2
    SPI2.setup({baud: 3200000, mosi: B15, miso: B14, sck: B13});
    var eth = require('WIZnet').connect(SPI2, P10);
    Т.е. была назначена скорость в 3'200'000 бод.

    Решил самостоятельно найти где в спецификации можно найти эту информацию.
    Источники, к которым обращался:
    1. Сайт Амперки - http://amperka.ru/product/arduino-ethernet-shield
    2. Сайт Arduino SRL - http://www.arduino.org/products/boards/4-arduino-boards/arduino-ethernet
    Т.к. на сайте Амперки для платы было указано "Ethernet-чип: Wiznet W5500", то посетил сайт производителя чипа.
    3. Сайт WIZnet - http://www.wiznet.co.kr/product-item/w5500/

    Старался пройти по всем ссылкам с этих страниц, но все безрезультатно. Максимум нашел только упоминание о том, что чип W5500 поддерживает скорость через SPI до 80МГц. Яндекс мне "объяснил", что прямой связи между МГц и бод нет.

    Что я упустил? Куда податься? :)
     
  5. nailxx

    nailxx Официальный Нерд Администратор

    Связь есть :) В конкретном контексте.

    Смотрите, SPI — синхронный интерфейс, т.е. бит от одного устройства «перетекает» в другое по линии MOSI или MISO в тот момент, когда дёргается линия SCK.

    Частота — это как часто что-то происходит. Боды — это скорость передачи данных в битах в секунду.

    Таким образом, если мы говорим об SPI, частота SCK (параметр baud) определяет скорость передачи по интерфейсу.

    Ваше право, если вы Master (а если вы — это Iskra JS, вы — Master) определить любой baud в пределах поддерживаемого микроконтроллером. Slave, такой как W5500 под вас подстроится. Но если baud будет слишком велик, slave физически не будет успевать реагировать.

    Поэтому в вашем примере предельный baud — 80 000 000 = 80 МГц.
     
  6. Do6p9k

    Do6p9k Нерд

    Эвано как :)

    nailxx, спасибо за развернутый и главное доступный для понимания ответ!!!