Разработка PIC32MZ.

Проект на PIC32MZ.

Цель разработки – создание прототипа для отладки функционала и начала работ программирования финального изделия.

Принципиальная схема и разводка печатной платы в DipTrace, доступны по данной ссылке.

Программный код генерации меандра на ассемблере в MPLAB X доступен по данной ссылке.

В отладочной плате реализован следующий функционал:

  • Микроконтроллер PIC32MZ0512EFE064

  • Преобразователи напряжений 9-36V на 3.3 и 5V

  • LED Дисплей WINSTAR 20*4 (PCF8574)

  • Матричная клавиатура 4*4 (PCF8574)

  • Управление восьмью внешними устройствами (PCF8574)

  • RS232 для связи с ПК и подключений GPS модуля

  • I2C преобразователь уровней 3.3V/5.0V для связи с линукс контроллером.

  • I2C часы реального времени.

  • I2C датчик клавиатуры.

  • SPI SD карта

  • RS485 ISO3088

...

Детальный просмотр.

Собрана и тестируется минимальная конфигурация. Контроллер PIC32MZ0512EFE064 и преобразователи напряжения на TPS5420-5V и MCP16301T-I/CH-3.3V.

10.2018 Ошибки в прототипе.

  • RS232 SP3232EUCN-L не подключен к выводам микроконтроллера, подаётся неверное питание 5V.

  • Сделать подтягивающие резисторы I2C для 3.3V через перемычки, так как внешний контроллер содержит подтягивающие резисторы 1.8ком.

  • Вывести ICSSP в центр, чтобы подключать PickIt 3 без переходников.

  • Убрать JTAG. Не заработал. Нет желания иразбираться почему.

  • Добавить в затвор 2N7002 резисторы 10-20 ом, добавить светодиоды.

  • Вывести линию EN дисплея на микроконтроллер.

I2C

Программный код примера записи в регистр pcf8574 MPLAB X доступен по данной ссылке.

...

Детальный просмотр.

Программный код примера записи в регистр pcf8574 MPLAB X доступен по данной ссылке.

При работе аппаратного I2C модуля процессора установлена и устранена следующая проблема. При операциях записи вначале выставляется адрес периферийного устройства. После того как периферийное устройство декодирует свой адрес, оно выдаёт команду ACK, прижимая линию SDA к земле. Модуль I2C процессора корректно формирует все необходимые флаги. Процессор быстрый и следующая команда может начать выполнение записи данных, пока линия данных ещё находится в состоянии нуля. Прижатая к земле линия SDA и корректное продолжение работы контроллера с I2C вещи несовместимые.

Ошибка линии данных SDA определяется флагом I2C1STATbits.BCL и решается путем установки в ноль и затем поднятием шины SCL. В примере работы с шиной I2C выполняется повторная инициализация модуля I2C. При инициализации модуля шина SDA и SCL сбрасывается в ноль. После инициализации i2c I2C1CONbits.I2CEN = 1, работа продолжается корректно.

Demonstrating an I2C Master device.

Communication Protocols on the PIC24EP and Arduino .

Каталог с исходными текстами I2C Miscrochip.

Interface to SC16IS740 UART for Particle devices.

Подключение LCD к порту pcf8574

...

Детальный просмотр.

Подключение дисплея к порту pcf8574 позволяет работать с дисплеем с внешнего линукс/windows компьютера по i2c шине. Поскольку используется только один порт pcf8574, работа с дисплеем осуществляется в 4-х битном режиме. Фактическая запись данных в дисплей происходит по спаду фронта линии EN. Поскольку линия EN так же находится на выводе pcf8574, приходится повторно передавать байт данных, это избыточно. Возможно есть смысл подключать EN к порту микроконтроллера.

I2C1SendByte( lcdByte | LCD_EN ); // Записать данные.
I2C1SendByte( lcdByte ); // Сброить EN.

Алгоритм записи байта данных в порт pcf8574 следующий. Отправляем на шину адрес устройства, получаем подтверждение, затем отправляем байт данных. Далее, цикл повторяется. В случае подключения LCD дисплея к pcf8574 этот алгоритм не работоспособен, так как при декодировании портом своего адреса на линиях данных порта отмечаются нежелательные изменения уровней сигнала. В случае подключения LCD дисплея к порту PCF8574 и работы его в четырёхбитном режиме алгоритм должен быть следующий. Выставляем адрес порта к которому подключен дисплей, получаем подтверждение, и далее, байт за байтом отправляем все необходимые данные. Передача одного байта данных в четырёхбитном режиме выполняется за две операции.

I2C1SendAddress( LCD_WA ); // Адрес pcf8574.
// 0x33
I2C1SendByte( 0b00110100); // 0x3 | EN.
I2C1SendByte( 0b00110000); // Сброс EN.
I2C1SendByte( 0b00110100); // 0x3 | EN.
I2C1SendByte( 0b00110000); // Сброс EN.
// 0x32
I2C1SendByte( 0b00110100); // 0x3 | EN.
I2C1SendByte( 0b00110000); // Сброс EN.
I2C1SendByte( 0b00100100); // 0x2 | EN.
I2C1SendByte( 0b00100000); // Сброс EN.

В исходных текстах программ Вы можете видеть предварительную инициализацию дисплея отправкой магических команд 0x33, 0x32. Считаем, что режим, в котором находится дисплей при включении не определён. Поэтому переводим дисплей в восьмибитный режим и затем в четырёхбитный. После выполняем обычную процедуру инициализации дисплея, передавая команды и данные уже в четырехбитном режиме.


LCD interfacing with Microcontrollers tutorial.

16x2 LCD interfacing in 4 bit mode

Связь с ПК через RS485

Простейшая программа вывода текста на компьютер доступна по данной ссылке.

Передача данных в стандарте RS485 организована через аппаратный интерфейс UART микроконтроллера, к которому подключен передатчик ISO3088. Использование ISO3088 избыточно, поскольку гальваническая развязка не используется, используется преобразование уровня из 3.3V UART в 5 вольт RS485.

...

Детальный просмотр.

Для связи с компьютером используется преобразователь интерфейса RS485 в USB Uport 1150. В качестве терминала использована штатная программа, идущая с Moxa Uport 1150, работоспособен и PuTYY терминал.

ISO3088 требует переключения из режима передачи в режим приёма данных по шине. Это достигается изменением состояния четвертого и пятого выводов ISO3088. При смене направления передачи данных требуется задержка в програмном коде UART.

...

...

Детальный просмотр.

USB to RS485 Serial Converter Cable.

Cхемотехника PIC32/JTAG

Explorer 16/32 Development Board

Explorer 16/32 Schematics

KiCAD and Spartan-6 LX9 TQG144

Микропроцессор своими руками

Xilinx FPGA

Open Source FPGA development board.

Пайка BGA

Reball BGA, способ накатать шары с первого раза.

Cхемотехника PIC32MX

PIC32MX3XX/4XX INSTRUCTION SET.

Source code for Beginner's Guide to Programming.

Using the PIC32MX250F128B as a USB Host.

Embedded Boards » HelvePic32.

OPEN SOURCE HARDWARE 32 BIT PINGUINO.

Forum. Weather station.

Cхемотехника PIC32/USB

USB CDC-ECM Class for Ethernet over USB.

USB in a NutShell.

Simple USB Hello World for PIC32.

Virtual COM Ports.

PIC32 USB Starter Kit III.

Universal Serial Bus CDC.

chipKIT DP32.

Cхемотехника PIC32/I2C

Bitbanging on I2C with a PIC micro.

PIC32-EMZ64. Development board

PIC32 Architecture and Programming

PIC32 Architecture and Programming.

Pic32prog is a utility for loading data into a flash memory.

Программирование на голом железе.

Ассемблер MIPS

MIPS32 Instruction Set Quick Reference.

MIPS Assembly Language Programmer’s Guide.

MIPS Instruction formats.

MPLAB XC32 ASSEMBLER, LINKER AND UTILITIES User’s Guide.

PIC32MX Family Reference Manual.

The MIPS Architecture.

MIPS32 4K™ Processor Core Family Software User’s Manual.

MIPS32® M4K® Processor Core Datasheet.

MIPS32® M4K™ Processor Core Software User’s Manual.

MIPS Introduction.

Исходные тексты Ассемблер/СИ

amb-pic-code-2010-09-19.tar.gz

asmext.zip

assembly.zip

i2cs.zip

mips1.zip

pic32_samples-master.zip

SysMin - плата и исходные тексты.

Microchip-master.zip

sparkbuzz-pic32.zip

sparkbuzz-pic32_usb.x-f8948fa22ba4.zip

sparkbuzz-pic32_tutorial_1.x-a51d188b6bad.zip

Hello_USB_1.7z

PIC32_SK_Port_IO_Demo_052113_USB.zip

Virtual COM Port.zip

MPLAB PROJECT FILES.zip

FreeRTOSv10.0.1.zip

PIC-USB-CDC-master.zip

pic32-Arduino-USB-Bootloader-original-master.zip

pic32-usb-bootloader-master.zip

TNKernel-PIC32-master.zip

UBW32_v1_6_3.X.zip

USB-master.zip

USB_-_CDC_Device_-_PIC32.zip

cdc.tar.gz

D_149.zip

194_mikromedia_for_pic32___examples_v1.1.0.1.zip

Книги.

Цифровая схемотехника и архитектура компьютера. Дэвид М. Харрис и Сара Л. Харрис

Schematic for converter cable, USB-RS485.

NU32. Embedded Computing and Mechatronics with the PIC32 Microcontroller.

NU32. Embedded Computing and Mechatronics - Sample Code.

NU32. PIC32 development board.

PIC Microcontrollers An Introduction to Microelectronics.

Programming 32-bit Microcontrollers in C.

PIC32

PIC32MX250 USB Communication using PIC microcontrollers

PIC32MX - Проект. Плата + Схема + Программа

Примеры с PIC

PIC Links (ссылки)

Serial PortComplete.

Getting started with Brad Minch's USB applications.

USB-CDC Tiny PIC bootloader firmware for PIC18F4550.

PIC16F1-USB-Bootloader

CDC example from Microchip

SB CDC Communications for Dummies

USB18 CDC ASM

A Windows Driver Installation library for USB devices

M-Stack USB Stack for Microchip PIC

Microchip_PIC18F4550_USB_Serial

MPLAB Code Configurator (плагин к MPLAB X)

PIC32MX clicker.

Литература.

Л.Н.Кечиев. Проектирование печатных плат для цифровой быстродействующей аппаратуры.

Говард Джонсон. Конструирование высокоскоростных цифровых устройств. Начальный курс черной магии.

Говард Джонсон. Высокоскоростная передача цифровых данных. Высший курс черной магии.

Говард Джонсон. Высокоскоростная передача цифровых данных. Высший курс черной магии.

DC-DC Литература.

Buck-boost DC/DC converter.