wiki:pmvent
no way to compare when less than two revisions
Различия
Показаны различия между двумя версиями страницы.
— | wiki:pmvent [2012/11/20 19:14] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Одноплатный компьютер ПМВент ====== | ||
+ | |||
+ | ====== Результаты тестирования ====== | ||
+ | Обозначения в таблице: | ||
+ | * {{ru: | ||
+ | * {{ru: | ||
+ | * {{ru: | ||
+ | |||
+ | ^ Сеть ^ USB HOST ^ USB OTG ^ Реле ^ Ц.ВХ. ^ DIP-switch ^ ЦАП ^ АЦП ^ 1-wire ^ CAN ^ RS-485 ^ Wifi ^ | ||
+ | | {{ru: | ||
+ | ====== Работа с одноплатным компьютером ПМ-ВЕНТ ====== | ||
+ | |||
+ | Для питания одноплатного компьютера требуется переменное напряжение 24В. Питание подают на разъем X1. | ||
+ | |||
+ | Одноплатный компьютер ПМ-ВЕНТ имеет консольный интерфейс пользователя, | ||
+ | |||
+ | Параметры консольного порта: | ||
+ | Скорость: | ||
+ | Длина слова: 8 бит\\ | ||
+ | Стоповый бит: 1 бит\\ | ||
+ | Контроль четности: | ||
+ | Аппаратное управление потоком: | ||
+ | |||
+ | При первом подключении консоли Windows обнаружит новое устройство, | ||
+ | |||
+ | * Windows: В программе HyperTerminal необходимо выставить скорость 115200, 8 бит, без контроля четности, | ||
+ | |||
+ | * Linux: В программе minicom выбирают устройство (обычно это) »/ | ||
+ | |||
+ | ===== Назначение сигналов модуля SomIQ-AM35 ===== | ||
+ | |||
+ | Разъем X2 | ||
+ | ^ № контакта ^ Назначение ^ Примечания | | ||
+ | | 1 | VMMC | питание SD | | ||
+ | | 2 | USB HOST DN | | | ||
+ | | 3 | MMC1_CD (ETK_D15/ | ||
+ | | 4 | USB HOST DP | | | ||
+ | | - | | | | ||
+ | | 34 | MMC1 CLK | | | ||
+ | | 35 | - | | | ||
+ | | 36 | MMC1 CMD | | | ||
+ | | 37 | USB0 VBUS | USB OTG | | ||
+ | | 38 | MMC1 DATA0 | | | ||
+ | | 39 | USB0 DP | USB OTG | | ||
+ | | 40 | MMC1 DATA2 | | | ||
+ | | 41 | USB0 DN | USB OTG | | ||
+ | | 42 | MMC1 DATA1 | | | ||
+ | | 43 | - | | | ||
+ | | 44 | MMC1 DATA3 | | | ||
+ | | 45 | USB0 ID | USB OTG | | ||
+ | | 46 | GPIO 127 (MMC1_DAT5) | 6 DIP (1) | | ||
+ | | 47 | MMC1 WP (MMC1_DAT4/ | ||
+ | | 48 | GPIO 129 (MMC1_DAT7) | 6 DIP (2) | | ||
+ | | 49 | - | | | ||
+ | | 50 | GPIO 159 (MCBSP1_DR) | 6 DIP (3) | | ||
+ | | 51 | - | | | ||
+ | | 52 | GPIO 158 (MCBSP1_DX) | 6 DIP (4) | | ||
+ | | 53 | - | | | ||
+ | | 54 | GPIO 157 (MCBSP1_FSR) | 6 DIP (5) | | ||
+ | | 55 | - | | | ||
+ | | 56 | GPIO 161 (MCBSP1_FSX) | 6 DIP (6) | | ||
+ | | - | - | | | ||
+ | | 63 | GPIO 119 (MCBSP2_DX) | Digital in 4 | | ||
+ | | 64 | - | | | ||
+ | | 65 | GPIO 116 (MCBSP2_FSX) | Digital in 1 | | ||
+ | | 66 | - | | | ||
+ | | 67 | GPIO 117 (MCBSP2_CLKX) | Digital in 2 | | ||
+ | | 68 | - | | | ||
+ | | 69 | GPIO 118 (MCBSP2_DR) | Digital in 3 | | ||
+ | | 70 | GPIO 155 (MCBSP4_FSX) | Relay 9 | | ||
+ | | - | - | | | ||
+ | | 73 | GPIO 97 (CCDC_VD) | Digital in 6 | | ||
+ | | 74 | GND | | | ||
+ | | 75 | GPIO 96 (CCDC_HD) | Digital in 5 | | ||
+ | | 76 | GPIO 98 (CCDC_WEN) | Digital in 7 | | ||
+ | | - | - | | | ||
+ | | 85 | GPIO 105 (CCDC_D6) | Relay 7 | | ||
+ | | 86 | GPIO 106 (CCDC_D7) | Relay 8 | | ||
+ | | 87 | GPIO 103 (CCDC_D4) | Relay 5 | | ||
+ | | 88 | GPIO 104 (CCDC_D5) | Relay 6 | | ||
+ | | 89 | GPIO 101 (CCDC_D2) | Relay 3 | | ||
+ | | 90 | GPIO 102 (CCDC_D3) | Relay 4 | | ||
+ | | 91 | GPIO 99 (CCDC_D0) | Relay 1 | | ||
+ | | 92 | GPIO 100 (CCDC_D1) | Relay 2 | | ||
+ | |||
+ | Разъем X3 | ||
+ | ^ № контакта ^ Назначение ^ Примечания | | ||
+ | | - | - | | | ||
+ | | 9 | GPIO 136 (MMC2_DATA4) | WLAN EN (Tiwi-R2) | | ||
+ | | 10 | GPIO 137 (MMC2_DATA5) | WLAN IRQ (Tiwi-R2) | | ||
+ | | 11 | SDIO_D2 (MMC2_DATA2) | SDIO_D2 (Tiwi-R2) | | ||
+ | | 12 | SDIO_D3 (MMC2_DATA3) | SDIO_D3 (Tiwi-R2) | | ||
+ | | 13 | SDIO_D0 (MMC2_DATA0) | SDIO_D0 (Tiwi-R2) | | ||
+ | | 14 | SDIO_D1 (MMC2_DATA1) | SDIO_D1 (Tiwi-R2) | | ||
+ | | 15 | SDIO_CLK (MMC2_CLK) | SDIO_CLK (Tiwi-R2) | | ||
+ | | 16 | SDIO_CMD (MMC2_CMD) | SDIO_CMD (Tiwi-R2) | | ||
+ | | - | - | | | ||
+ | | 23 | BOOT[5] | Не используется пока | | ||
+ | | - | - | | | ||
+ | | 36 | RESET | CPU RESET | | ||
+ | | - | - | | | ||
+ | | 41 | CAN_TX | | | ||
+ | | 42 | - | | | ||
+ | | 43 | CAN_RX | | | ||
+ | | - | - | | | ||
+ | | 46 | UART3_RX | Консоль | | ||
+ | | 47 | UART3_TX | Консоль | | ||
+ | | - | - | | | ||
+ | | 94 | I2C3_SDA | I2C данные | | ||
+ | | 95 | GPIO 119 (MCBSP3_DX) | ADC Busy (Pulled-UP) | | ||
+ | | 96 | I2C3_SCL | I2C clock | | ||
+ | | 97 | GPIO 116 (MCBSP3_FSX) | ADC Start conversion (#low) | | ||
+ | |||
+ | ===== Сборка ПО ===== | ||
+ | Всё ПО скомпилировано в дистрибутиве Linux Ubuntu 10.04. | ||
+ | |||
+ | Компилятор: | ||
+ | |||
+ | Как установить компилятор описано здесь: [[arm-gcc]] | ||
+ | ==== Подготовка SD карты ==== | ||
+ | Подойдет любая SD карта ёмкостью около 2ГБ (зависит от размера файловой системы). Скачиваем скрипт для форматирования карты: | ||
+ | [[http:// | ||
+ | |||
+ | Выполняем его на неподмонтированной карте (например, | ||
+ | < | ||
+ | sudo LANG=c ./ | ||
+ | </ | ||
+ | Следите за возможными сообщениями об ошибках и, если всё ОК, то получите два раздела: | ||
+ | * FAT32 (сюда записывают MLO, u-boot.bin, uImage) | ||
+ | * Ext3 (здесь находится файловая система) | ||
+ | ==== x-loader ==== | ||
+ | 1) скачиваем исходники xloader для SomIQ-AM35 | ||
+ | < | ||
+ | git clone git:// | ||
+ | </ | ||
+ | 2) компилируем | ||
+ | |||
+ | Сначала необходимо прописать путь к компилятору | ||
+ | < | ||
+ | export PATH=/ | ||
+ | make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm distclean | ||
+ | make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm am3517somiq_config | ||
+ | make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm | ||
+ | </ | ||
+ | 3) Получаем файл x-load.bin, который преобразуем в нужный формат: | ||
+ | Утилиту signGP скачивают отсюда: | ||
+ | < | ||
+ | signGP x-load.bin | ||
+ | mv x-load.bin.ift MLO | ||
+ | </ | ||
+ | 4) Полученный файл MLO необходимо записать на __свеже-отформатированную__ партицию FAT32 карты SD. | ||
+ | ==== u-boot ==== | ||
+ | // | ||
+ | |||
+ | 1) скачиваем исходники u-boot для SomIQ-AM35 | ||
+ | < | ||
+ | wget http:// | ||
+ | </ | ||
+ | 2) компилируем | ||
+ | < | ||
+ | make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm distclean | ||
+ | make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm am3517somiq_config | ||
+ | make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm | ||
+ | </ | ||
+ | 3) Полученный файл u-boot.bin записываем на партицию FAT32 карты SD | ||
+ | ==== ядро Linux ==== | ||
+ | |||
+ | Данное ядро версии 2.6.37 было портировано с платформы AM3517EVM. Данное ядро не поддерживает нужный нам чип Wifi, но зато поддерживает почти всю остальную периферию (RTC и управление контроллером питания не поддерживаются). | ||
+ | |||
+ | 1) Скачиваем исходные тексты ядра | ||
+ | < | ||
+ | wget http:// | ||
+ | </ | ||
+ | |||
+ | 2) компилируем (используем компилятор arm-2010q1) | ||
+ | < | ||
+ | make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm am3517somiq_defconfig | ||
+ | make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm uImage modules | ||
+ | </ | ||
+ | полученный файл ядра uImage записывают на партицию FAT32 карты SD | ||
+ | |||
+ | 3) Устанавливаем модули **Ядра Linux** на карту SD\\ | ||
+ | Далее предполагается, | ||
+ | < | ||
+ | sudo make ARCH=arm modules_install INSTALL_MOD_PATH=/ | ||
+ | </ | ||
+ | |||
+ | ==== Компиляция WLAN драйвера для wl1271 ==== | ||
+ | В ядре 2.6.37 для AM3517EVM драйвер wl1271 не подходит для нашей платы, поэтому будем использовать открытые драйвера для беспроводных чипов **compat-wireless**. Подробности здесь: [[http:// | ||
+ | |||
+ | 1) Скачиваем исходные тексты драйвера | ||
+ | < | ||
+ | wget http:// | ||
+ | </ | ||
+ | |||
+ | 2) Распаковываем архив | ||
+ | < | ||
+ | tar xzf compat-wireless-2.6.37.tar.gz | ||
+ | </ | ||
+ | Получилась директория **compat-wireless-2.6** и в нее нужно зайти. | ||
+ | |||
+ | 3) Компиляция драйвера wl1271\\ | ||
+ | Обратите внимание, | ||
+ | < | ||
+ | cd compat-wireless-2.6 | ||
+ | ./ | ||
+ | make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- KLIB=/ | ||
+ | </ | ||
+ | Ошибок компиляции быть не должно! | ||
+ | |||
+ | 4) Установка модулей на файловую систему\\ | ||
+ | **// | ||
+ | |||
+ | Сначала соберем модули, | ||
+ | < | ||
+ | find ./ | grep ko$ | xargs tar cvjf wireless-compat_modules.tar.bz2 | ||
+ | </ | ||
+ | Теперь нужно скопировать содержимое данного архива в директорию / | ||
+ | |||
+ | Далее команды выполняются на файловой системе нашего устройства: | ||
+ | < | ||
+ | cd / | ||
+ | mkdir updates | ||
+ | cd updates | ||
+ | tar xf wireless-compat_modules.tar.bz2 | ||
+ | </ | ||
+ | |||
+ | 5) Установка загрузочных файлов для wl1271 в файловой системе одноплатного компьютера | ||
+ | Сначала скачаем последнюю версию загрузочных файлов для wl1271 (это бинарные файлы, которые загружаются непосредственно в чип WLAN). | ||
+ | < | ||
+ | git clone git:// | ||
+ | </ | ||
+ | Получится директория **linux-firmware** из которой нам потребуется только папка **ti-connectivity**. Эту папку со всем содержимым необходимо скопировать в файловую систему в директорию / | ||
+ | |||
+ | 6) **На загруженной системе выполняют команду " | ||
+ | ==== Установка файловой системы ==== | ||
+ | Образ файловой системы был собран с помощью web-утилиты [[http:// | ||
+ | |||
+ | 1) Скачиваем | ||
+ | < | ||
+ | wget http:// | ||
+ | </ | ||
+ | |||
+ | 2) Монтируем раздел sdc2 | ||
+ | < | ||
+ | sudo mount /dev/sdc2 / | ||
+ | </ | ||
+ | |||
+ | 3) записываем образ файловой системы на раздел SD карты | ||
+ | < | ||
+ | cd / | ||
+ | sudo tar xzf image-am3517-evm.tar.gz | ||
+ | </ | ||
+ | |||
+ | 4) Вносим исправления, | ||
+ | < | ||
+ | wget http:// | ||
+ | sudo patch -p1 < fs.patch | ||
+ | </ | ||
+ | |||
+ | 5) Отмонтируйте оба раздела SD карты и можно загружать плату. | ||
+ | |||
+ | **SD карту устанавливают в разъем X27.** | ||
+ | ==== busybox ==== | ||
+ | 1) Скачиваем и распаковываем [[http:// | ||
+ | < | ||
+ | wget http:// | ||
+ | tar xf busybox-1.20.1.tar.bz2 | ||
+ | </ | ||
+ | |||
+ | 2) Компилируем | ||
+ | < | ||
+ | make ARCH=arm oldconfig | ||
+ | make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- | ||
+ | </ | ||
+ | |||
+ | 3) Устанавливаем | ||
+ | < | ||
+ | sudo applets/ | ||
+ | </ | ||
+ | ===== Результаты тестирования ===== | ||
+ | |||
+ | ==== Ethernet ==== | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | eth0 Link encap: | ||
+ | inet addr: | ||
+ | UP BROADCAST RUNNING MULTICAST | ||
+ | RX packets:9 errors:0 dropped:0 overruns:0 frame:0 | ||
+ | TX packets:29 errors:0 dropped:0 overruns:0 carrier:0 | ||
+ | collisions: | ||
+ | RX bytes:2660 (2.5 KiB) TX bytes:6421 (6.2 KiB) | ||
+ | Interrupt: | ||
+ | |||
+ | lo Link encap:Local Loopback | ||
+ | inet addr: | ||
+ | UP LOOPBACK RUNNING | ||
+ | RX packets:0 errors:0 dropped:0 overruns:0 frame:0 | ||
+ | TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 | ||
+ | collisions: | ||
+ | RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) | ||
+ | |||
+ | root@am3517-crane: | ||
+ | PING ya.ru (213.180.193.3): | ||
+ | 64 bytes from 213.180.193.3: | ||
+ | 64 bytes from 213.180.193.3: | ||
+ | 64 bytes from 213.180.193.3: | ||
+ | |||
+ | --- ya.ru ping statistics --- | ||
+ | 3 packets transmitted, | ||
+ | round-trip min/avg/max = 2.289/ | ||
+ | |||
+ | |||
+ | root@am3517-crane: | ||
+ | Connecting to 192.168.0.104 (192.168.0.104: | ||
+ | file 100% |*******************************| | ||
+ | real 0m 35.42s | ||
+ | user 0m 1.09s | ||
+ | sys 0m 16.38s | ||
+ | </ | ||
+ | ==== USB ==== | ||
+ | === USB HOST === | ||
+ | К данному интерфейсу подключена микросхема FT4232HL, которая имеет 4 порта полных RS232 портов. Для данного устройства используется 3 порта RS232 (UART) для обеспечения 3-х интерфейсов RS-485. | ||
+ | |||
+ | Лог загрузки ядра для микросхемы FT4232HL: | ||
+ | < | ||
+ | USB Serial support registered for FTDI USB Serial Device | ||
+ | ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected | ||
+ | usb 1-1: Detected FT4232H | ||
+ | usb 1-1: Number of endpoints 2 | ||
+ | usb 1-1: Endpoint 1 MaxPacketSize 512 | ||
+ | usb 1-1: Endpoint 2 MaxPacketSize 512 | ||
+ | usb 1-1: Setting MaxPacketSize 512 | ||
+ | usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0 | ||
+ | ftdi_sio 1-1:1.1: FTDI USB Serial Device converter detected | ||
+ | usb 1-1: Detected FT4232H | ||
+ | usb 1-1: Number of endpoints 2 | ||
+ | usb 1-1: Endpoint 1 MaxPacketSize 512 | ||
+ | usb 1-1: Endpoint 2 MaxPacketSize 512 | ||
+ | usb 1-1: Setting MaxPacketSize 512 | ||
+ | usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB1 | ||
+ | ftdi_sio 1-1:1.2: FTDI USB Serial Device converter detected | ||
+ | usb 1-1: Detected FT4232H | ||
+ | usb 1-1: Number of endpoints 2 | ||
+ | usb 1-1: Endpoint 1 MaxPacketSize 512 | ||
+ | usb 1-1: Endpoint 2 MaxPacketSize 512 | ||
+ | usb 1-1: Setting MaxPacketSize 512 | ||
+ | usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB2 | ||
+ | ftdi_sio 1-1:1.3: FTDI USB Serial Device converter detected | ||
+ | usb 1-1: Detected FT4232H | ||
+ | usb 1-1: Number of endpoints 2 | ||
+ | usb 1-1: Endpoint 1 MaxPacketSize 512 | ||
+ | usb 1-1: Endpoint 2 MaxPacketSize 512 | ||
+ | usb 1-1: Setting MaxPacketSize 512 | ||
+ | usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB3 | ||
+ | usbcore: registered new interface driver ftdi_sio | ||
+ | ftdi_sio: v1.5.0:USB FTDI Serial Converters Driver | ||
+ | </ | ||
+ | Данный лог доказывает, | ||
+ | === USB OTG === | ||
+ | Подключаем USB HUB к разъему X29 (USB-A), ядро выдает сообщение: | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | musb_h_ep0_irq 1119: no URB for end 0 | ||
+ | usb 1-1: new high speed USB device using musb_hdrc and address 3 | ||
+ | usb 1-1: New USB device found, idVendor=0409, | ||
+ | usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 | ||
+ | hub 1-1:1.0: USB hub found | ||
+ | hub 1-1:1.0: 4 ports detected | ||
+ | </ | ||
+ | Интерфейс USB OTG в режиме USB-host работает. | ||
+ | ==== GPIO ==== | ||
+ | Чтобы было проще проверять функционал GPIO все линии GPIO были добавлены в sysfs, поэтому работать с Реле и линиями ввода можно с помощью команд **cat** и **echo**. На SD карте, поставляемой с одноплатным компьютером присутствуют набор скриптов для настройки и управления линиями GPIO. Также этот набор скриптов находится по адресу: | ||
+ | |||
+ | По уровням управляющих сигналов: | ||
+ | === Реле 1 === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | </ | ||
+ | слышны характерные щелчки и тестер, | ||
+ | === Реле 2 === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | </ | ||
+ | слышны характерные щелчки и тестер, | ||
+ | === Реле 3 === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | </ | ||
+ | слышны характерные щелчки и тестер, | ||
+ | === Реле 4 === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | </ | ||
+ | слышны характерные щелчки и тестер, | ||
+ | === Реле 5 === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | </ | ||
+ | слышны характерные щелчки и тестер, | ||
+ | === Реле 6 === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | </ | ||
+ | слышны характерные щелчки и тестер, | ||
+ | === Реле 7 === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | </ | ||
+ | слышны характерные щелчки и тестер, | ||
+ | === Реле 8 === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | </ | ||
+ | слышны характерные щелчки и тестер, | ||
+ | === Реле 9 === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | </ | ||
+ | слышны характерные щелчки и тестер, | ||
+ | |||
+ | **Далее цифровые входы (проверялись напряжением 10В)** | ||
+ | === DIN 1 (разъем X32) === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | 1 | ||
+ | root@am3517-crane: | ||
+ | 0 | ||
+ | </ | ||
+ | |||
+ | === DIN 2 (разъем X33) === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | 1 | ||
+ | root@am3517-crane: | ||
+ | 0 | ||
+ | </ | ||
+ | |||
+ | === DIN 3 (разъем X34) === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | 1 | ||
+ | root@am3517-crane: | ||
+ | 0 | ||
+ | </ | ||
+ | |||
+ | === DIN 4 (разъем X35) === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | 1 | ||
+ | root@am3517-crane: | ||
+ | 0 | ||
+ | </ | ||
+ | |||
+ | === DIN 5 (разъем X36) === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | 1 | ||
+ | root@am3517-crane: | ||
+ | 0 | ||
+ | </ | ||
+ | |||
+ | === DIN 6 (разъем X37) === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | 1 | ||
+ | root@am3517-crane: | ||
+ | 0 | ||
+ | </ | ||
+ | |||
+ | === DIN 7 (разъем X38) === | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | root@am3517-crane: | ||
+ | 1 | ||
+ | root@am3517-crane: | ||
+ | 0 | ||
+ | </ | ||
+ | |||
+ | **Дип-переключатель 6ти сдвиговый** | ||
+ | |||
+ | Сначала настраивают линии GPIO на ввод и потом можно смотреть состояние соответствующих линий посредством команд **cat** и **echo** | ||
+ | |||
+ | < | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | </ | ||
+ | |||
+ | Теперь можно смотреть состояния сдвигового переключателя | ||
+ | < | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | </ | ||
+ | |||
+ | ==== I2C шина ==== | ||
+ | АЦП и ЦАП подключены к процессору через шину I2C. У процессора используется шина I2C-3. | ||
+ | |||
+ | Проверяем есть ли устройства на шине i2c-3: | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | WARNING! This program can confuse your I2C bus, cause data loss and worse! | ||
+ | I will probe file /dev/i2c-3 using read byte commands. | ||
+ | I will probe address range 0x03-0x77. | ||
+ | Continue? [Y/n] y | ||
+ | | ||
+ | 00: -- -- -- -- -- -- -- -- -- 0c 0d -- -- | ||
+ | 10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- | ||
+ | 20: -- 21 -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 70: -- -- -- -- -- -- -- -- | ||
+ | </ | ||
+ | Согласно документации: | ||
+ | * Микросхема DA7, АЦП AD7993-0 (AS pin = GND): i2c address = 0x21 | ||
+ | * Микросхема DD2, 1-Wire Master DS2482-800 (AD0=AD1=AD2 = GND): i2c address = 0x18 | ||
+ | * Микросхема DA11, ЦАП AD5315 (A0 pin = GND): i2c address = 0x0c | ||
+ | * Микросхема DA10, ЦАП AD5315 (A0 pin = 5V): i2c address = 0x0d | ||
+ | Таким образом, | ||
+ | ==== ADC (АЦП) ==== | ||
+ | |||
+ | Для тестирования была написана утилита, | ||
+ | |||
+ | Для компиляции программы: | ||
+ | |||
+ | * Скачиваем исходные тексты: | ||
+ | < | ||
+ | wget http:// | ||
+ | </ | ||
+ | |||
+ | * Распаковываем: | ||
+ | < | ||
+ | tar xzf ad799x.tgz | ||
+ | cd ad799x | ||
+ | </ | ||
+ | |||
+ | * Прописываем путь к компилятору: | ||
+ | < | ||
+ | export PATH=/ | ||
+ | </ | ||
+ | |||
+ | * Компилируем: | ||
+ | < | ||
+ | maxx@ubuntu: | ||
+ | arm-none-linux-gnueabi-gcc -g -Wall -O -c -o main.o main.c | ||
+ | arm-none-linux-gnueabi-gcc -o adc-read main.o | ||
+ | maxx@ubuntu: | ||
+ | adc-read | ||
+ | </ | ||
+ | Получаем исполняемый файл **adc-read**, | ||
+ | |||
+ | Пример работы программы adc-read: | ||
+ | < | ||
+ | root@am3517-pmvent: | ||
+ | programm usage: | ||
+ | adc-read < | ||
+ | channel number: 1-4 | ||
+ | root@am3517-pmvent: | ||
+ | ADC[1]: HEX=0xa Voltage=0.10V | ||
+ | </ | ||
+ | Здесь использованы значения: | ||
+ | - 33 - адрес микросхемы на шине i2c (0x21) | ||
+ | - 1 - номер канала АЦП (нумерация 1, 2, 3, 4 - не подключен) | ||
+ | |||
+ | * канал 1 - разъем X11 | ||
+ | * канал 2 - разъем X10 | ||
+ | * канал 3 - разъем X9 | ||
+ | |||
+ | По схеме на входе АЦП стоит делитель 1/2, который делит входное напряжение пополам. Опорное напряжение на АЦП равно 5В. Поэтому любое значение из регистра результата (REG_VAL) рассчитывается по формуле: | ||
+ | < | ||
+ | Vin = REG_VAL * 2 * 5 / 1024 | ||
+ | </ | ||
+ | ==== DAC (ЦАП) ==== | ||
+ | Для тестирования была написана утилита, | ||
+ | |||
+ | Для компиляции программы: | ||
+ | |||
+ | * Скачиваем исходные тексты: | ||
+ | < | ||
+ | wget http:// | ||
+ | </ | ||
+ | |||
+ | * Распаковываем: | ||
+ | < | ||
+ | tar xzf ad5315.tgz | ||
+ | cd ad5315 | ||
+ | </ | ||
+ | |||
+ | * Прописываем путь к компилятору: | ||
+ | < | ||
+ | export PATH=/ | ||
+ | </ | ||
+ | |||
+ | * Компилируем: | ||
+ | < | ||
+ | maxx@ubuntu: | ||
+ | arm-none-linux-gnueabi-gcc -g -Wall -O -c -o main.o main.c | ||
+ | arm-none-linux-gnueabi-gcc -o dac-write main.o | ||
+ | maxx@ubuntu: | ||
+ | dac-write | ||
+ | </ | ||
+ | Получаем исполняемый файл **dac-write**, | ||
+ | |||
+ | Пример работы прогрмаммы dac-write: | ||
+ | < | ||
+ | root@am3517-crane: | ||
+ | DAC: set i2c address to d | ||
+ | DAC: set channel number to 1 | ||
+ | DAC: pointer reg = 0x01 | ||
+ | DAC: set shift register to 512 | ||
+ | DAC: shift register MSB=0x28 LSB=0x00 | ||
+ | </ | ||
+ | Таким образом мы загрузили в ЦАП с адресом 0x0d (13), в первый канал (DACA) значение 512, соответствующее половине разрядной сетки ЦАП, т.е. на выходе ЦАП имеем напряжение Udac=Vref/ | ||
+ | |||
+ | Проверены 5 каналов: | ||
+ | * ЦАП по адресу 13 (DA10) имеет 4 канала: | ||
+ | * канал 1 (DACA) - разъем X13; | ||
+ | * канал 2 (DACB) - разъем X12; | ||
+ | * канал 3 (DACC) - разъем X15; | ||
+ | * канал 4 (DACD) - разъем X14; | ||
+ | * ЦАП по адресу 12 (DA11) имеет 1 канал (DACA) - разъем X16 | ||
+ | ==== 1-Wire ==== | ||
+ | На плате установлен 1w-мастер DS2482, имеющий 8 каналов. На изделии используется только 5. Микросхема DS2482 способна сама определять тип подключаемых устройств и выводит соответствующие сообщение на терминал. | ||
+ | |||
+ | Для работы 1-wire мастера необходимо выполнить следующие дейсвтия: | ||
+ | * загрузить модуль драйвера для устройства, | ||
+ | * загрузить модуль драйвера DS2482 | ||
+ | * сообщить адрес DS2482 на i2c-шине | ||
+ | < | ||
+ | root@am3517-pmvent: | ||
+ | root@am3517-pmvent: | ||
+ | root@am3517-pmvent: | ||
+ | [ | ||
+ | root@am3517-pmvent: | ||
+ | 28-000000a995a1 | ||
+ | w1_bus_master1 | ||
+ | w1_bus_master2 | ||
+ | root@am3517-pmvent: | ||
+ | f3 01 4b 46 7f ff 0d 10 d3 : crc=d3 YES | ||
+ | f3 01 4b 46 7f ff 0d 10 d3 t=31187 | ||
+ | root@am3517-pmvent: | ||
+ | 1 | awk -F= ' | ||
+ | 31.562 degrees Celsius | ||
+ | </ | ||
+ | В предыдущем примере мы считали значения температуры с датчика DS18B20+ | ||
+ | |||
+ | Нумерация каналов в схеме: | ||
+ | - канал IO0 микросхемы, | ||
+ | - канал IO1 микросхемы, | ||
+ | - канал IO2 микросхемы, | ||
+ | - канал IO7 микросхемы, | ||
+ | - канал IO6 микросхемы, | ||
+ | |||
+ | === Проблема с динамическим подключением === | ||
+ | В данной версии ядра присутствует проблема с " | ||
+ | |||
+ | Пример для одного датчика DS18B20+, который подключен к одному каналу, | ||
+ | < | ||
+ | root@am3517-pmvent: | ||
+ | Module | ||
+ | ds2482 | ||
+ | w1_therm | ||
+ | root@am3517-pmvent: | ||
+ | [ 832.960327] w1_master_driver w1_bus_master1: | ||
+ | root@am3517-pmvent: | ||
+ | root@am3517-pmvent: | ||
+ | root@am3517-pmvent: | ||
+ | root@am3517-pmvent: | ||
+ | 28-000000a995a1 | ||
+ | w1_bus_master1 | ||
+ | w1_bus_master2 | ||
+ | root@am3517-pmvent: | ||
+ | d7 01 4b 46 7f ff 09 10 55 : crc=55 YES | ||
+ | d7 01 4b 46 7f ff 09 10 55 t=29437 | ||
+ | </ | ||
+ | ==== CAN ==== | ||
+ | |||
+ | На плате установлена микросхема физического уровня CAN: ISO1050DUB, позиционное обозначение DD4. Для согласования волнового сопротивления установлен резистор 120 Ом, который подключается между линиями CANH/CANL с помощью перемычки XT1. | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | < | ||
+ | # opkg install canutils iproute2 | ||
+ | Installing canutils (4.0.6-r1.0.5) to root... | ||
+ | Downloading http:// | ||
+ | e/ | ||
+ | Installing libsocketcan2 (0.0.8-r0.0.5) to root... | ||
+ | Downloading http:// | ||
+ | e/ | ||
+ | Installing iproute2 (2.6.38-r4.0.9) to root... | ||
+ | Downloading http:// | ||
+ | ase/ | ||
+ | Configuring iproute2. | ||
+ | update-alternatives: | ||
+ | Configuring libsocketcan2. | ||
+ | Configuring canutils. | ||
+ | </ | ||
+ | < | ||
+ | root@am3517-pmvent: | ||
+ | root@am3517-pmvent: | ||
+ | [ 3723.351562] ti_hecc ti_hecc: setting CANBTC=0xc0028 | ||
+ | </ | ||
+ | ==== RS-485 ==== | ||
+ | Микросхема FT4232H по умолчанию настраивает линии свои линии RI#/TXDEN в режиме RI# (rs232), однако для управления направлением передачи данных RS-485 (полудуплекс) необходимо сконфигурировать микросхему FT4232H так, чтобы линии RI#/TXDEN перешли из режима RI в режим TXDEN. Для этого выполняют следующие действия (используя ОС Windows): | ||
+ | |||
+ | 1) Скачивают и распаковывают драйвера VCP (virtual com port)\\ | ||
+ | [[http:// | ||
+ | |||
+ | 2) Подключают специальный кабель к разъему X39 (как показано на картинке) и порту USB персонального компьютера | ||
+ | |||
+ | {{x39.jpg}} | ||
+ | |||
+ | 3) На запрос Windows об обнаружении нового устройства указывают путь к драйверам, | ||
+ | |||
+ | 4) После установки драйверов лучше отключить USB кабель от ПК и подключить его заново, | ||
+ | |||
+ | Теперь можно использовать утилиту FT_PROG 2.6.8 - EEPROM Programming Utility. | ||
+ | |||
+ | Утилита для конфигурации памяти EEPROM, подключенной к FT4232HL, находится здесь: [[http:// | ||
+ | |||
+ | 1) Запустить FT_Prog.exe | ||
+ | |||
+ | 2) В меню Devices-> | ||
+ | если все предыдущие действия выполнены правильно, | ||
+ | |||
+ | 3) Выбираем HardwareSpecifics-> | ||
+ | Устанавливаем галочку напротив "RI as RS485 Enable" | ||
+ | |||
+ | 4) Повторяем шаг 3 для портов Port_B, Port_C, Port_D | ||
+ | |||
+ | 5) В меню File выбираем Program Device | ||
+ | |||
+ | 6) Закрываем программу | ||
+ | |||
+ | Теперь микросхема FT4232HL будет управлять направлением передачи данных интерфейсных микросхем RS-485. | ||
+ | |||
+ | Для тестирования интерфейса необходим кабель, | ||
+ | {{wiki: | ||
+ | |||
+ | Интерфейс rs-485, соответствующий / | ||
+ | - нет подключений | ||
+ | - нет подключений | ||
+ | - RS-485 " | ||
+ | - RS-485 " | ||
+ | - нет подключений | ||
+ | - нет подключений | ||
+ | Для согласования волнового сопротивления имеется резистор 120 Ом, подключаемый перемычкой XT2. | ||
+ | |||
+ | Интерфейсы rs-485, соответствующие / | ||
+ | - 24В | ||
+ | - Земля (общий) | ||
+ | - RS-485 " | ||
+ | - RS-485 " | ||
+ | - 24В | ||
+ | - Земля (общий) | ||
+ | * разъем X41 - для согласования волнового сопротивления имеется резистор 120 Ом, подключаемый перемычкой XT3. | ||
+ | * разъем X42 - для согласования волнового сопротивления имеется резистор 120 Ом, подключаемый перемычкой XT4. | ||
+ | |||
+ | С помощью простых команд echo и cat посылают и принимают данные между двумя устройствами. | ||
+ | |||
+ | Если тестирование выполняется на одной плате с одним терминальным соединением, | ||
+ | < | ||
+ | root@am3517-pmvent: | ||
+ | </ | ||
+ | При этом поочередно переставляя кабель в два другие разъема rs-485 на плате и читая данные с двух других интерфейсов / | ||
+ | < | ||
+ | root@am3517-pmvent: | ||
+ | </ | ||
+ | < | ||
+ | root@am3517-pmvent: | ||
+ | </ | ||
+ | ==== WLAN 802.11 ==== | ||
+ | // | ||
+ | |||
+ | Для проверки работоспособности WLAN модуля используйте команды, | ||
+ | |||
+ | Обратите внимание, | ||
+ | < | ||
+ | ifconfig wlan0 down | ||
+ | ifconfig wlan0 hw ether 00: | ||
+ | ifconfig wlan0 up | ||
+ | </ | ||
+ | Дополнительная информация по этой теме здесь: [[http:// | ||
wiki/pmvent.txt · Последнее изменение: 2012/11/20 19:14 — 127.0.0.1