Библиотека предназначена для работы с модулями на контроллере KS0066U, HD44780U и совместимыми и микроконтроллером Renesas UPD70F3793 но может быть адаптирована под любой МК.
Питание дисплея осуществляется от 3.3V.
На вывод контраста подается отрицательное напряжение полученое на инвертирующем зарядовом насосе.
Подключение дисплея к МК осуществляется так:
ЖК модуль <-> uPD70f3793
-----------------------
DB0 <-> PDL0
DB1 <-> PDL1
DB2 <-> PDL2
DB3 <-> PDL3
DB4 <-> PDL4
DB5 <-> PDL5
DB6 <-> PDL6
DB7 <-> PDL7
RS -> PDL8
R/W -> PDL9
E -> PDL10
-----------------------
На таймере P генерируется ШИМ 200КГц и подается с вывода P35 на зарядовый насос.
Ограничивая ширину импульсов, можно регулировать контрастность дисплея.
Схема зарядового насоса:
Перед выполнением функций чтения/записи, надо вызвать LCD_init()
Функция LCD_write_command_or_data имеет два параметра - первый указывает что будем записывать - команды (LCD_COMMAND или LCD_COMMAND_NO_BF_CHECK) или данные (LCD_DATA или LCD_DATA_NO_BF_CHECK) а затем собственно команда или байт данных.
Приставка NO_BF_CHECK означает что не будем проверять флаг Busy от дисплея (на моем дисплее он работал не правильно).
Вот пример вывода двух цифр в верхнюю и нижнюю строки:
Запишем адрес начала верхней строки (0x80 потому что адрес 0x00 а первый бит - команда записи адреса)
LCD_write_command_or_data(LCD_COMMAND_NO_BF_CHECK, 0x80);
И выведем цифру 1
LCD_write_command_or_data(LCD_DATA_NO_BF_CHECK, (0x31);
Запишем адрес начала нижней строки (0xC0 потому что адрес 0x40 а первый бит - команда записи адреса получаем 11000000b тоесть 0xC0)
LCD_write_command_or_data(LCD_COMMAND_NO_BF_CHECK, 0xC0);
И выведем цифру 2
LCD_write_command_or_data(LCD_DATA_NO_BF_CHECK, (0x32);
Исходники написаны на C в среде IAR.
Скачать можно здесь:
uPD70F3793_LCD.zip
среда, 22 июня 2011 г.
понедельник, 16 мая 2011 г.
EEPROM в SFP модулях
По спецификации, на SFP и SFP+ модулях,установлен EEPROM объемом 128 байт.
Первые 96 байт специфицированы, оставшиеся - отводятся производителю.
Нас интересуют первые 96.
Итак:
Байт: Значение: Описание:
-------------------
Базовый блок
-------------------
0 0x03 Тип модуля - 0x03 SFP
1 0x04 Расширенный тип - 0x04 GBIC/SFP функционал доступен через I2C
2 0x07 Тип коннектора - 0x07 LC коннектор
3-10 xx Электрическая или оптическая совместимость (опишу отдельно)
11 0x06 Тип кодировки данных - 0x06 64B/66B
12 0x67 Номинальная скорость передачи бит в 100Mbps 0x67=103x100Mbps
13 0x00 RATE_ID нас пока не касается
14 0x28 Дальность на SMF в километрах - 0x28 = 40Km
15 0xFF Дальность на SMF в 100 метрах - 0xFF больше не лезет видимо
16 0x00 Дальность на оптике с ядром 50мкм OM2 в 10 метрах
17 0x00 Дальность на оптике с ядром 62.5мкм OM1 в 10 метрах
18 0x00 Дальность на меди в метрах
19 0x00 Дальность на оптике с ядром 50мкм OM3 в 10 метрах
20-35 xx Название производителя в ASCII
36 0x20 Электрическая или оптическая совместимость (опишу отдельно)
37-39 xx IEEE код производителя
40-55 xx Партийный номер модуля в ASCII
56-59 xx Ревизия в ASCII
60-61 0x060E Длинна волны - 0x060E - 1550нм
62 0x00 Зарезервировано
63 xx Контрольная сумма базового блока (просто 8 бит от суммы всех байт от 0 до 62)
------------------
Расширенный блок
------------------
64-65 0x601A Опциональные сигналы (опишу позже)
66 0x00 Верхний зазор по битрейту в процентах
67 0x00 Нижний зазор по битрейту в процентах
68-83 xx Серийный номер модуля в ASCII
84-91 xx Дата производства
92 0x68 Реализованная диагностика (опишу позже)
93 0xF0 Реализованная расширенный функционал (опишу позже)
94 0x20 SFF-8472 совместимость
95 xx Контрольная сумма расширенного блока (просто 8 бит от суммы всех байт от 64 до 94)
Допишу позже
Первые 96 байт специфицированы, оставшиеся - отводятся производителю.
Нас интересуют первые 96.
Итак:
Байт: Значение: Описание:
-------------------
Базовый блок
-------------------
0 0x03 Тип модуля - 0x03 SFP
1 0x04 Расширенный тип - 0x04 GBIC/SFP функционал доступен через I2C
2 0x07 Тип коннектора - 0x07 LC коннектор
3-10 xx Электрическая или оптическая совместимость (опишу отдельно)
11 0x06 Тип кодировки данных - 0x06 64B/66B
12 0x67 Номинальная скорость передачи бит в 100Mbps 0x67=103x100Mbps
13 0x00 RATE_ID нас пока не касается
14 0x28 Дальность на SMF в километрах - 0x28 = 40Km
15 0xFF Дальность на SMF в 100 метрах - 0xFF больше не лезет видимо
16 0x00 Дальность на оптике с ядром 50мкм OM2 в 10 метрах
17 0x00 Дальность на оптике с ядром 62.5мкм OM1 в 10 метрах
18 0x00 Дальность на меди в метрах
19 0x00 Дальность на оптике с ядром 50мкм OM3 в 10 метрах
20-35 xx Название производителя в ASCII
36 0x20 Электрическая или оптическая совместимость (опишу отдельно)
37-39 xx IEEE код производителя
40-55 xx Партийный номер модуля в ASCII
56-59 xx Ревизия в ASCII
60-61 0x060E Длинна волны - 0x060E - 1550нм
62 0x00 Зарезервировано
63 xx Контрольная сумма базового блока (просто 8 бит от суммы всех байт от 0 до 62)
------------------
Расширенный блок
------------------
64-65 0x601A Опциональные сигналы (опишу позже)
66 0x00 Верхний зазор по битрейту в процентах
67 0x00 Нижний зазор по битрейту в процентах
68-83 xx Серийный номер модуля в ASCII
84-91 xx Дата производства
92 0x68 Реализованная диагностика (опишу позже)
93 0xF0 Реализованная расширенный функционал (опишу позже)
94 0x20 SFF-8472 совместимость
95 xx Контрольная сумма расширенного блока (просто 8 бит от суммы всех байт от 64 до 94)
Допишу позже
вторник, 15 марта 2011 г.
Беда в Японии
Внимание! В связи с тяжелейшими последствиями землетрясения и цунами в Японии, произошедшими 11 марта 2011 года, Российский Красный Крест объявил чрезвычайный сбор средств, для оказания помощи пострадавшим жителям Японии. Вся подробная информация и реквизиты есть на официальном сайте Российского Красного Креста.
Так же, на официальном сайте Американского Красного Креста открыт аналогичный сбор средств, там можно перевести деньги по кредитной карте. Подробности смотрите тут
Так же, на официальном сайте Американского Красного Креста открыт аналогичный сбор средств, там можно перевести деньги по кредитной карте. Подробности смотрите тут
Подписаться на:
Сообщения (Atom)