МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Кафедра «Електронних обчислювальних машин»
/
Курсова робота
з дисципліни “Мікропроцесорні системи”
на тему:
“ Мікрокомп'ютер для виводу графічної інформації на TFT екран”
Анотація
В курсовій роботі розроблено мікрокомп’ютер на мікроконтролері типу STM32F103C8 з периферійним вузлом SPI, який використовується для виведення графічної інформації на TFT LCD модуль ITDB02-1.8sp. Також поданий опис внутрішньої структури ядра мікроконтролера, його програмна модель, виводи, система команд та інші компоненти. Були розроблені схеми електрична функціональна та електрична принципова мікрокомп’ютера, на яких наведено підключення вузлів синхронізації та скиду, пам’яті і периферії.
ЗМІСТ
Вступ…………...…………………………..……………………………...……………4
Технічне завдання ……………………………..………………………….……….…5
Розділ 1. Розробка структурної схеми мікрокомп’ютера......................................6
1.1.Функціональне призначення мікрокомп’ютера……………………..........….6
1.2. Структурна схема мікрокомп’ютера. …………………………………….…6
1.3.Основні характеристики та режими роботи мікрокомп’ютера …...….7
Розділ 2. Розробка апаратних вузлів мікрокомп’ютера……………...…….……8
2.1. Технічні характеристики мікропроцесора…………………………………...8
2.1.1. Функціональна блок-схема мікропроцесора…………………….….9
2.1.2. Опис основних функціональних вузлів мікропроцесора………..…9
2.1.3. Структура пам’яті мікроконтролера………………………….….12
2.1.4. Характеристики системи команд…………….………………..…..12
2.2. Розробка схеми електричної функціональної……………………….………13
2.3. Розробка схеми електричної принципової…………………………………..14
2.3.1. Проектування зовнішньої пам’яті…………………………...…….14
2.3.2. Проектування SPI інтерфейсу………………………………………15
2.3.3. Опис вузла дисплею…………………………………………………….17
2.3.4. Вузол синхронізації (PLL)……………………………………………..18
2.3.5. Вузол Reset……………………………………………………………….19
Розділ 3. Розробка програмного забезпечення мікрокомп’ютера …….….…..20
3.1. Вибір середовища розробки ПЗ………………………………………….....…20
3.2 Блок-схема алгоритму роботи програми ……………………………..….…22
Висновки ………………………………………………………………………...…..24
Список використаної літератури …………………………………………….......25
Додатки …………………………………………………………………………..…..26
ВСТУП
Системи автоматичного управління виробничими процесами, інформаційно-вимірювальні та контрольно-діагностичні системи, а також автоматизація наукових досліджень не можуть бути реалізовані без приладів, які виконують функції управління.
При побудові системи управління будь-яким об'єктом стає ряд завдань: робити вимірювання (можливо у великій кількості і від кількох об'єктів), проводити їх обробку, забезпечувати зберігання інформації, виробляти керуючі сигнали. Все це буде займати в оператора багато часу і може призводити до грубих помилок. Тому постає питання про автоматизацію вимірювань, що збільшує швидкість роботи, а, отже, і обсяг одержуваної інформації, веде до підвищення точності та достовірності результатів вимірювань та звільняє людину від монотонної і важкої роботи.
У зв'язку з цим останнім часом в якості пристроїв управління зростає застосування мікропроцесорів. Сучасні мікропроцесори володіють такими обчислювальними ресурсами і можливостями керування в режимі реального часу, для отримання яких раніше необхідні були дорожчі багато-кристальні системи.
Розвиток електронної обчислювальної техніки є на даний момент пріоритетним напрямком розвитку науково-технічного прогресу.
Метою курсової роботи є проектування мікрокомп’ютера для керування виводом графічної інформації на LCD.
Реалізація поставленого завдання здійснюється за допомогою мікропроцесора STM32F103C8, LCD-дисплею типу ITDB02-1.8sp, постійної та оперативної пам’яті а також периферійного пристрою SPI. Технічні характеристики даної конфігурації повністю задовольняють вимоги системи, що розробляється.
ТЕХНІЧНЕ ЗАВДАННЯ
Розробити мікрокомп’ютер для керування виводом текстової інформації на LCD дисплей типу ITDB02-1.8sp на базі мікропроцесора STM32F103C8 з інтерфейсом SPI.
Розділ 1. Розробка структурної схеми мікрокомп’ютера.
1.1. Функціональне призначення мікрокомп’ютера.
Дуже часто користувачеві потрібно з чогось зчитувати інформацію. Для цих цілей добре підходить LCD дисплей , він є невід'ємною частиною радіоелектронної апаратури для виведення різної інформації.
У цій курсовій роботі розробляється мікрокомп’ютер на базі мікропроцесора STM32F103C8 для виведення текстової інформації на рідкокристалічний дисплей ITDB02-1.8sp з SPI інтерфейсом.
1.2. Структурна схема мікрокомп’ютера.
На (рис.1) представлена структурна схема мікрокомп’ютера, яка складається з таких основних вузлів:
FRAM типу FM24CL64 – зовнішня пам’ять , яка призначена для зберігання графічної та текстової інформації.
TFT дисплей ITDB02-1.8sp - для виводу графічної та текстової інформації.
Мікроконтролер STM32F103С8 – призначений для керування всіма периферійними вузлами , в ньому розміщується програма роботи мікрокомп’ютера та по необхідності також може бути розміщена графічна інформація для виводу на дисплей.
/
Рис. 1.1. Структyрна схема мікрокомп’ютера.
1.3 Основні характеристики та режими роботи мікрокомп’ютера.
Для виведення інформації використовується ITBD02-1.8SP це TFT LCD модуль тому основні характеристики мікрокомп’ютера будуть такими :
Роздільна здатність 128 x 160
65K кольорів
Діагональ дисплею 1,8 дюйма
Частота оновлення дисплею 30 Гц
Допустимі робочі температури -40 оС до +85 оС
Розмір зовнішньої пам’яті 64Кб
Мікрокомп’ютер має можливість виводу графічної та текстової інформації, може працювати як в статичному режимі (інформація на дисплеї не змінюється), так і в динамічному (інформація на дисплеї змінюється за умов які було описано в програмному забезпеченні).
Висновок: в розділі №1 описано функціональне призначення мікрокомп’ютера , розроблено його структурну схему , наведено основні вузли системи та описані основні характеристки мікрокомп’ютера.
Розділ 2. Розробка апаратних вузлів мікрокомп`ютера.
2.1. Технічні характеристики мікропроцесора.
Таблиця 2.1. Характеристики мікропроцесора.
Flash - Kбайт
128
SRAM - Kбайт
20
Таймери
Головна мета
3
Розширений контроль
1
Комунікації
SPI
2
I2C
2
USART
3
USB
1
CAN
1
GPIOs
37
12-бітний синхронізований АЦП
Кількість каналів
2
10 каналів
Частота процесора
72 MHz
Робоча напруга
2.0 до 3.6 V
Робочі температури
Температура навколишнього середовища: -40 to +85 °C / -40 to +105 °C
Температура переходу: -40 to + 125 °C
Пакети
LQFP48,
UFQFPN48
2.1.1. Функціональна блок-схема мікропроцесора
На (рис.2.1) представлена структурна схема мікропроцесора STM32F103С8.
/
Рис.2.1. Структурна схема мікроконтролера STM32F103С8.
2.1.2. Опис основних функціональних вузлів мікропроцесора.
Ядро ARM Cortex -M3. 32-бітний RISC-процесор ARM Cortex ™ -M3 - це останнє покоління процесорів ARM для вбудованих систем. Вона була розроблена, щоб забезпечити недорогу платформу, яка відповідає потребам реалізації MCU, зі зменшеним кількістю контактів і низьким енергоспоживанням, забезпечуючи при цьому видатну обчислювальну продуктивність і розширену відповідь системи на переривання.
CRC (циклічний контроль надмірності) блок обчислення. Блок обчислення CRC використовується для отримання CRC-коду з 32-бітового слова даних і фіксованого полінома генератора.
Інтегрована SRAM і Flash-пам’ять. Для зберігання програм і даних доступно 64 або 128 Кбайт вбудованої Flash-пам’яті , 20Кбайт вбудованого SRAM.
Вбудований контролер переривань векторів (NVIC). Режими сну використовуються для вимкнення периферійних пристроїв і доменів годинника в пристрої для економії енергії.
Зовнішній контролер переривань / подій (EXTI). Зовнішній контролер переривань / подій складається з 19 ліній детектора фронтів, які використовуються для генерування запитів переривання / події.
Тактовий генератор і запуск. Системний вибір такту виконується під час запуску, однак внутрішній RC 8 МГц осцилятор вибирається як типовий для ЦП при скиданні. Зовнішній тактовий генератор 4-16 МГц також може бути обраний. Якщо виявлено помилку, система автоматично перемикається на внутрішній RC-генератор.
Режими завантаження. Під час запуску, входи завантаження використовуються для вибору одного з трьох параметрів завантаження (завантажувач знаходиться в системній пам'яті):
Завантаження з Flash-користувача
Завантаження з системної пам'яті
Завантаження з вбудованого SRAM
Контролер прямого доступу до пам’яті (DMA). Гнучка 7-канальна DMA загального призначення здатна керувати передачею з пам'яті в пам'ять, з периферії в пам’ять , з пам’яті в периферію.
RTC (годинник реального часу) і резервні регістри. RTC і регістри резервного копіювання надходять через комутатор, який приймає живлення або при подачі VDD, коли він присутній, або через вивід VBAT. Резервні регістри - це десять 16-бітових регістрів, що використовуються для зберігання 20 байтів даних прикладних програм, коли потужність VDD відсутня.
Таймери та watchdogs. STM32F103С8 включає в себе розширений таймер керування, три таймера загального призначення, два таймера watchdogs і таймер SysTick.
I²C шина. До двох інтерфейсів шини I²C можуть працювати в режимах мультимастер і підлеглий. Вони можуть підтримувати стандартні та швидкі режими, підтримують подвійну адресацію (7-біт) і обидві 7/10-бітові адреси в режимі master.
Універсальний синхронний / асинхронний приймач (USART). Один з інтерфейсів USART здатний спілкуватися зі швидкістю до 4,5 Мбіт/с. Інші доступні інтерфейси обмінюються даними до 2,25 Мбіт/с.
Послідовний периферійний інтерфейс (SPI). До двох модулів SPI здатні передавати до 18 Мбіт / с в підпорядкованих і основних режимах у режимах повного і простого зв'язку.
Мережа контролерів (CAN). CAN сумісний зі специфікаціями 2.0A та B (активний) зі швидкістю до 1 Мбіт / с. Він може приймати і передавати стандартні кадри з 11-бітовими ідентифікаторами, а також розширені кадри з 29-бітовими ідентифікаторами.
Універсальна послідовна шина (USB). Лінійка STM32F103xx має вбудований периферійний пристрій USB, сумісний з повнорозмірною USB. Присутній програмно-налаштовуваний параметр кінцевої точки та призупинення / відновлення підтримки.
Bходи / виходи загального призначення (GPIO). Кожен з контактів GPIO може бути налаштований програмним забезпеченням як вихідний або вихідний. Більшість контактів GPIO спільно використовуються цифровими або аналоговими альтернативними функціями.
АЦП (аналого-цифровий перетворювач). Два 12-бітові аналого-цифрові перетворювачі вбудовані в пристрої STM32F103xx, а кожен АЦП розділяє до 16 зовнішніх каналів, виконуючи перетворення в одиночному або режимі сканування. У режимі сканування автоматичне перетворення виконується на вибраній групі аналогових входів.
Температурний сенсор. Датчик температури генерує напругу, яка змінюється лінійно з температурою. Діапазон перетворення знаходиться між 2 В <VDDA <3.6 В. Датчик температури внутрішньо підключений до вхідного каналу ADC12_IN16, який використовується для перетворення вихідної напруги датчика в цифрове значення.
Порт для налагодження послідовного з’єднання JTAG(SWJ-DP). Інтерфейс ARM SWJ-DP вбудований. і є комбінованим портом JTAG і послідовним налагодженням з’єднання, який дозволяє або налагоджувати послідовний з’єднувач, або зонд JTAG, щоб підключатися до цілі.
2.1.3. Структура пам’яті мікроконтролера.
Адресний простір мікроконтролерів STM32 організовано у вигляді лінійного простору. Розмір цього простору визначається 32-розрядної шиною і може мати граничне значення 232 = 4 Гбайт. Адресний простір мікроконтролера STM32 розділенй на 8 блоків по 512 Мбайт, тобто з інтервалом в 0x20000000 байт. Пам'ять програм починається з адреси 0x00000000. У цій області зберігаються коди програм користувача і системна інформація. Оперативна пам'ять STM32 має початкову адресу 0x20000000. Регістри функціональних блоків і пристроїв введення-виведення мікроконтролера також відображені в пам'яті, починаючи з адреси 0x40000000. Спеціальні регістри мікроконтролера знаходяться в пам'яті, починаючи з адреси 0xE0000000.
Мікроконтролери STM32 мають 3 різних режиму початкового завантаження, які можуть бути обрані за допомогою виходів BOOT0 і BOOT1.
2.1.4. Характеристики системи команд .
ЦПУ Cortex - це RISC процесор з архітектурою load-store. Перед виконанням команд обробки даних, операнди повинні бути завантажені в центральний регістровий файл. Операції з даними повинні виконуватися в цих регістрах і результати зберігатися в пам'яті. Вся програмна діяльність зосереджується на регістровому файлі ЦПУ. Цей регістровий файл складається з шістнадцяти 32- бітних регістрів. Регістри R0-R12 є простими регістрами, які можуть бути використані для зберігання змінних. Регістри R13-R15 виконують спеціалізовані функції всередині ЦПУ Cortex. Регістр R13 використовується як покажчик стека. Це згрупований регістр, що дозволяє ЦПУ Cortex мати окремі стеки для двох режимів роботи. Наступний регістр, R14, називається регістром зв'язку. Він використовується для зберігання адреси повернення при переході в процедуру. Це дозволяє ЦПУ Cortex здійснювати швидкий вхід і вихід з процедури. Останній регістр, R15, є лічильником команд (PC); так як він входить до складу реєстрового файлу, значення R15 можна зчитувати і змінювати як у випадку з будь-яким іншим регістром.
2.2. Розробка схеми електричної функціональної.
Мікрокомп’ютер складається з зовнішньої пам’яті, мікропроцесора, вузла скиду і синхронізації, а також з вузла периферії SPI. Для підключення зовнішньої пам’яті використовується інтерфейс I2C.
Вузол скиду призначений для затримки сигналу на деякий час, для того щоб мікропроцесорні пристрої встигли перезавантажитись та встановитись в початковий режим роботи. Сигнал RESET спрацьовує по високому логічному рівні та використовується для початкового скидання та ініціалізації процесора.
Вузол синхронізації призначений для формування тактових сигналів, які забезпечують функціонування усіх вузлів мікропроцесора. Він під’єднюється до мікропроцесора за допомогою виводів PC14 і PC15.
В даному мікрокомп’ютері використовуються оперативний запам’ятовуючий пристрій з організацією 64К. Даний ОЗП підключається за допомогою інтерфейсу I2C. Записавши дані в пам'ять, їх можна використовувати для пересилання через певну периферію. У даному випадку це здійснюється через порт SPI. Для цього використовуємо програмну реалізацію SPI- інтерфейсу, тобто передачу даних з пам’яті на SPI буде здійснювати спеціальна програма, яка буде доступатись до пам’яті та передаватиме дані із неї.
2.3. Розробка схеми електричної принципової.
2.3.1. Опис зовнішньої пам’яті.
FM24CL64 - енергонезалежна пам'ять ємністю 64Кбіт, виконана за сегнетоелектричною технологією. Сегнетоелектричний оперативний запам'ятовуючий пристрій або FRAM є енергонезалежним і виконує операції читання і запису подібно ОЗП. Вона забезпечує надійне зберігання інформації протягом 10 років, при усуненні проблем пов'язаних зі складністю, обмеженим швидкодією запису і рівнем системної надійності EEPROM та іншої незалежної пам'яті.
FM24C64 виконує операцію запису на швидкості шини. При цьому не виникає ніяких затримок при записі. Наступний цикл шини може бути розпочатий негайно без необхідності опитування даних. FRAM споживає набагато меншу потужність при записі, ніж EEPROM, якому потрібно додаткове джерело живлення схеми програмування.
FM24CL64 випускається в стандартному 8-вив. корпусі SOIC і використовує стандартний 2-дротовий інтерфейс. Виконання технічних характеристик гарантується для всього промислового температурного діапазону: -40°C… +85°C.
/
Рис. 2.4. Блок-схема пристрою пам’яті FM24СL64.
Таблиця 2.2. Опис виводів FM24CL64.
Найменування виводу
Опис
A0-A2
Адреса пристрою
SDA
Введення послідовних даних / адрес
SCL
Вхід тактування послідовної зв'язку
WP
Вхід захисту від запису
VSS
Земля
VDD
Напруга живлення
/
Рис. 2.5. Протокол передачі даних пам’яті FM24СL64..
2.3.2. Опис вузла SPI інтерфейсу.
Для підключення МП до SPI порту використовується програмна реалізація SPI інтерфейсу. Для цього використовується сигнали порту А мікроконтролера А4 – А7, яким відповідають сигнали SPI порту NSS, SCK, MISO, MOSI відповідно.
/
Рис. 2.6. Схема підключення МП до SPI порту.
Інтерфейс SPI дозволяє здійснювати високошвидкісну синхронну передачу даних між мікроконтролером і периферійними пристроями або між декількома мікроконтролерами.
Взаємодія між двома пристроями SPI завжди здійснюється між пристроєм в режимі Master (“ведучий”) і пристроєм в режимі Slave (“ведений”). Інтерфейс SPI мікроконтролерів може бути конфігурований як для роботи в режимі Master, так і для роботи в режимі Slave.
У цій системі активним є ведучий пристрій. Він надає тактовий сигнал, на основі якого здійснюється послідовна передача даних. Ведений пристрій не може генерувати тактовий сигнал, в слідство чого не може самостійно ініціювати активність. SPI містить чотири сигнальні лінії. Це лінія генератора зсуву (SCK), лінія «Вихід ведучого вхід веденого» лінія «Вхід ведучого вихід веденого» і лінія вибору веденого з низьким активним рівнем (NSS). Коли SPI включений, напрям передачі даних на виводах SCK, MOSI, MISO і NSS змінюється відповідно до таб. 2.6.
Таблиця 2.3. Виводи SPI.
Вивід
Напрям в режимі Master
Напрям в режимі Slave
MOSI
Визначається користувачем
Вхід
MISO
Вхід
Визначається користувачем
SCK
Визначається користувачем
Вхід
NSS
Визначається користувачем
Вхід
З таблиці 2.6 видно, що автоматично ініціалізувалися тільки вхідні лінії. Вихідні лінії повинні явно ініціалізуватися програмою. Це зроблено з метою уникнення пошкодження портів.
Лінія вибору веденого NSS грає центральну роль в конфігурації SPI. Залежно від режиму, в якому працює пристрій, і настройки цієї лінії, вона може використовуватися для активування і деактивації пристроїв.
Тимчасові діаграми сигналів на виводах SPI порту приведені на рис. 2.27. Як видно з приведених тимчасових діаграм, сигнал NSS накриває весь проміжок часу, призначений для обміну інформацією. Сигнал тактової синхронізації SCLOCK в цьому інтерфейсі використовується один як для передавача, так і для приймача.
/
Рис. 2.7. Діаграми сигналів на виводах синхронного послідовного інтерфейсу SPI.
2.3.3. Опис вузла дисплею.
В курсовій роботі використовується TFT дисплей на базі контролера ST7735. ST7735 - це одночиповий контролер / драйвер для 262K-кольорового графічного типу TFT-LCD. Ця мікросхема здатна підключатися безпосередньо до зовнішнього мікропроцесора і приймає послідовний інтерфейс SPI, 8-бітний / 9-бітовий / 16-бітний / 18-бітний паралельний інтерфейс. Відображення даних може зберігатися в мікросхемі на дисплеї ОЗП 132 х 162 х 18 біт. Вона може виконувати відображення даних оперативної пам'яті операції читання / запису без зовнішнього робочого годинника для мінімізації енергоспоживання.
Таблиця 2.4. Виводи дисплею.
Виводи
Тип
Опис
VIN
P
Контакт живлення 5В
GND
G
Земля
RST
I
Скидання , активація низького рівня
RS
I
Вибір даних/команд
SDA
I
Послідовне введення даних
SCL
I
Послідовний тактовий вхід
CS
I
Вибір мікросхеми , активний низький рівень
VDD33
P
Контакт живлення 3.3В
/
Рис. 2.8. Схема дисплею типу ITDB02-1.8sp.
2.3.4. Вузол синхронізації (PLL).
Вузол синхронізації призначений для формування тактових сигналів, які забезпечують функціонування усіх вузлів мікропроцесора. Синхронізація роботи процесора виконується за допомогою підключення зовнішнього джерела тактових імпульсів до входу тактової частоти процесора.
/
Рис. 2.2. Вузол синхронізації.
2.3.5. Вузол Reset
Для коректної роботи периферійних пристроїв та функціональних блоків мікропроцесора STM32F103 потрібен вузол перезавантаження, який встановлює режим роботи по замовчуванню і складається з RC-ланки, що дозволяє уникнути збоїв в роботі.
/
Рис. 2.3. Вузол RESET.
Висновок: в розділі №2 описано основні характеристики , наведено структурну схему та опис основних вузлів мікропроцесора STM32F103C8T6. Також було розглянуто його характеристику системи команд та структуру пам’яті. Проводилась розробка схеми електричної функціональної та електричної принципової та було спроектовано вузол синхронізації і вузол скиду. Було наведено опис вузлів : SPI інтерфейсу , дисплею , зовнішньої пам’яті ; з наведеними до них часовими діаграмами роботи та схемами.
Розділ 3. Розробка програмного забезпечення мікрокомп’ютера.
3.1. Вибір середовища розробки ПЗ.
В курсовій роботі використовується середовище розробки ПЗ CooCox IDE.
CooCox IDE дозволяє працювати з проектами будь-якого ступеня складності, починаючи з введення і редагування вихідних текстів і закінчуючи внутрішньосхемним налагодженням коду і програмуванням мікроконтролера. Серед основних програмних засобів CooCox IDE можна відзначити.
1. Базу даних мікроконтролерів, що містить докладну інформацію про всі підтримувані пристрої. Тут зберігаються їх конфігураційні дані і посилання на джерела інформації з додатковими технічними описами.
2. Менеджер проектів для об'єднання програмних модулів і файлів в групи, що дозволяє набагато краще орієнтуватися серед безлічі файлів.
3. Вбудований редактор, який полегшує роботу з вихідним текстом за рахунок використання багатовіконного інтерфейсу, виділення синтаксичних елементів шрифтом і кольором.
4. Засоби автоматичної компіляції, асемблювання і компонування проекту, які призначені для створення виконуваного (завантажувального) модуля програми. Компілятори працюють з текстами, написаними на Сі або асемблері.
5. Симулятор - відлагоджує роботу компільованої програми на віртуальній моделі мікропроцесора. Досить вірогідно моделюється робота ядра контролера і його периферійного обладнання: портів введення-виведення, таймерів, контролерів переривань.
/
Рис. 2.4. Стартове вікно середовища розробки CooCox IDE.
/
Рис. 2.5. Вікно проекту в CooCox IDE.
3.2 Блок-схема алгоритму роботи програми.
3.3. Опис та результати роботи програми.
В ході написання програмного забезпечення використовувалась бібліотека для контролера дисплею ST7735. В основному в тестовій програмі було використано такі функції бібліотеки :
ST7735_drawCircle() – дозволяє намалювати контур кола в заданій області дисплею з вказаним його радіусом і кольором.
ST7735_writeInteger() – запис цілої змінної на дисплей з вказаним його кольором і розміром.
ST7735_drawString() – виведення на екран вказаного ряду символів в відповідному місці дисплею з вказаним їх розміром та кольором.
ST7735_fillScreen() – заливка екрану певним кольором.
Також була створена функція initMain() для ініціалізації вихідних портів та ініціалізації SPI інтерфейсу мікроконтролера. Для передачі інформації на дисплей використовувався інтерфейс мікроконтролера SPI1(виводи А5-А7). Для керування дисплеєм використовувались порти мікроконтролера (B13-B15).
/
Рис. 3.1. Результат виконання програми.
Висновок: в розділі №3 наведений опис середовища розробки програми, зображено блок-схему роботи програми, описано основні функції які використовувались в програмі та наведено зображення результату виконання роботи.
ВИСНОВКИ
В курсовій роботі розроблено мікрокомп’ютер на мікроконтролері типу STM32F103C8 з периферійним вузлом SPI, який використовується для виведення графічної інформації на TFT LCD модуль ITDB02-1.8sp.
Мікрокомп’ютер містить зовнішню оперативну пам’ять, яка підключена через послідовний інтерфейс I2C.
В курсовій роботі представлено теоретичні відомості про мікроконтролер STM32F103С8Т6, розроблено принципову і функціональну схеми підключення пам’яті, а також розроблено програмну реалізацію SPI інтерфейсу для обміну даними з пам’яттю. Програма була розроблена в середовищі CooCox IDE.
Також поданий опис внутрішньої структури ядра мікроконтролера, його програмна модель, виводи, система команд та інші компоненти.
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
Мартин М. «Инсайдерское руководство по STM32», Москва, 2006.
Ознакомительное руководство по ARM- микроконтроллерам Cortex-M3:
http://lishnih.net/arm/STM32book.pdf
Джосеф Ю. Ядро CORTEX-МЗ компании ARM. Полное руководство., 2012.
Geoffrey Brown. Discovering the STM32 Microcontroller, 2016
STMicroelectronics. STM32F105xx. User’s Manual.
STM32F103 Datasheet (PDF)
RM0008 Reference manual STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs.
http://easyelectronics.ru/img/ARM_kurs/CMSIS/stm32.pdf
AN2576 Application note STM32F10xxx SPI application examples.
https://habrahabr.ru/post/208026/
ST7735_SitronixTechnology Datasheet (PDF)
FM24CL64ds_r2.0 Datasheet (PDF)
ДОДАТКИ
Додаток 1. Схема електрична функціональна
/
Додаток 2. Схема електрична принципова
/
Додаток 3. Перелік елементів до схеми електричної принципової
Перш. застосув.
Поз. позн.
Найменування
Кільк.
Примітка
Конденсатори
C1-C3
EЛТ – К50 – Е24 – 100нФ +/-15%
3
С4 , С5
EЛТ – К50 – Е24 – 100пФ +/-15%
2
Довідк. №
Мікросхеми
D1
STM32F103C8T6
1
STMicroelectronics
D2
ITDB02-1.8SP
1
ITEDEA STUDIO
D3
FM24CL64B
1
FRAM
Резистори
R1
МЛТ - 0,125 - 10кОм +/-10%
1
R2 , R3
МЛТ - 0,125 – 4,7кОм +/-10%
2
Резонатори
Підп. і дата
GN1
PK206AA – 32,768 KHz – 6BC
1
Кнопки
S1
IT-1187-160GM-G
1
Інв.№ дубл.
Взім. інв.№
Підп. і дата
Курсова робота
Зм.
Лист
№ докум.
Підп.
Дата
Інв.№ подл.
Розробив
Шургот С. В.
Мікрокомп'ютер для керування виводом текстової інформації на LCD з інтерфейсом SPI
Схема електрична принципова.
Перелік елементів
Аркуш 1
Аркушів 1
Перевірив
Пуйда В. Я.
Національний Університет "Львівська політехніка" гр. КІ-4x
Н.контроль
Затв.
Додаток 4. Лістинг програми
Demo.c
#include "ST7735.h"
void initMain()
{
// setup output pins
GPIO_Digital_Output(&GPIOB_ODR, _GPIO_PINMASK_13); // Reset
GPIO_Digital_Output(&GPIOB_ODR, _GPIO_PINMASK_14); // D/C (RS)
GPIO_Digital_Output(&GPIOB_ODR, _GPIO_PINMASK_15); // CS
// Initialize SPI1 module
SPI1_Init_Advanced(_SPI_FPCLK_DIV8, _SPI_MASTER | _SPI_8_BIT |
_SPI_CLK_IDLE_LOW | _SPI_FIRST_CLK_EDGE_TRANSITION |
_SPI_MSB_FIRST | _SPI_SS_DISABLE | _SPI_SSM_ENABLE | _SPI_SSI_1,
&_GPIO_MODULE_SPI1_PA567);
// Allow module to stabalize
Delay_ms(100);
}
void main() {
initMain();
ST7735_Init();
while(1)
{
int x;
ST7735_fillScreen(colGreen);
for (x = 0; x <= 59; x += 1){
ST7735_drawCircle(80, 64 , 32, colYellow);
ST7735_writeInteger(5, SCREEN_WIDTH/2, x, colAzure, 2);
ST7735_drawString(37, 1, "Coursework MPS ", colYellow, 1);
ST7735_drawString(21, 12, "STM32F103C8 + ST7735 ", colYellow, 1);
delay_ms(1000);
ST7735_writeInteger(5, SCREEN_WIDTH/2, x, colSlateBlue, 2);
ST7735_drawString(22, 110, "Shurhot Stepan KI-41", colYellow, 1);
if (x >= 59){break;}
}
}
}
ST7735.h
#define swap(a, b) { int t = a; a = b; b = t; }
#define SCREEN_WIDTH 160
#define SCREEN_HEIGHT 128
#define ST7735_NOP 0x0
#define ST7735_SWRESET 0x01
#define ST7735_RDDID 0x04
#define ST7735_RDDST 0x09
#define ST7735_SLPIN 0x10
#define ST7735_SLPOUT 0x11
#define ST7735_PTLON 0x12
#define ST7735_NORON 0x13
#define ST7735_INVOFF 0x20
#define ST7735_INVON 0x21
#define ST7735_DISPOFF 0x28
#define ST7735_DISPON 0x29
#define ST7735_CASET 0x2A
#define ST7735_RASET 0x2B
#define ST7735_RAMWR 0x2C
#define ST7735_RAMRD 0x2E
#define ST7735_COLMOD 0x3A
#define ST7735_MADCTL 0x36
#define ST7735_FRMCTR1 0xB1
#define ST7735_FRMCTR2 0xB2
#define ST7735_FRMCTR3 0xB3
#define ST7735_INVCTR 0xB4
#define ST7735_DISSET5 0xB6
#define ST7735_PWCTR1 0xC0
#define ST7735_PWCTR2 0xC1
#define ST7735_PWCTR3 0xC2
#define ST7735_PWCTR4 0xC3
#define ST7735_PWCTR5 0xC4
#define ST7735_VMCTR1 0xC5
#define ST7735_RDID1 0xDA
#define ST7735_RDID2 0xDB
#define ST7735_RDID3 0xDC
#define ST7735_RDID4 0xDD
#define ST7735_PWCTR6 0xFC
#define ST7735_GMCTRP1 0xE0
#define ST7735_GMCTRN1 0xE1
// macro to convert to RGB888 (24-bit value) to RGB565(12-bit, 4096 color)
#define RGB565(r,g,b) ((((r>>3)<<11) | ((g>>2)<<5) | (b>>3)))
#define colAliceBlue RGB565(240,248,255)
#define colAntiqueWhite RGB565(250,235,215)
#define colAqua RGB565( 0,255,255)
#define colAquamarine RGB565(127,255,212)
#define colAzure RGB565(240,255,255)
#define colBeige RGB565(245,245,220)
#define colBisque RGB565(255,228,196)
#define colBlack RGB565( 0, 0, 0)
#define colBlanchedAlmond RGB565(255,255,205)
#define colBlue RGB565( 0, 0,255)
#define colBlueViolet RGB565(138, 43,226)
#define colBrown RGB565(165, 42, 42)
#define colBurlywood RGB565(222,184,135)
#define colCadetBlue RGB565( 95,158,160)
#define colChartreuse RGB565(127,255, 0)
#define colChocolate RGB565(210,105, 30)
#define colCoral RGB565(255,127, 80)
#define colCornflowerBlue RGB565(100,149,237)
#define colCornsilk RGB565(255,248,220)
#define colCrimson RGB565(220, 20, 60)
#define colDarkGoldenRod RGB565(184,134, 11)
#define colDarkGray RGB565(169,169,169)
#define colDarkGreen RGB565( 0,100, 0)
#define colDarkKhaki RGB565(189,183,107)
#define colDarkMagenta RGB565(139, 0,139)
#define colDarkOliveGreen RGB565( 85,107, 47)
#define colDarkOrange RGB565(255,140, 0)
#define colDarkOrchid RGB565(153, 50,204)
#define colDarkRed RGB565(139, 0, 0)
#define colDarkSalmon RGB565(233,150,122)
#define colDarkSeaGreen RGB565(143,188,143)
#define colDarkSlateBlue RGB565( 72, 61,139)
#define colDarkSlateGray RGB565( 47, 79, 79)
#define colDarkTurquoise RGB565( 0,206,209)
#define colDarkViolet RGB565(148, 0,211)
#define colDeepPink RGB565(255, 20,147)
#define colDeepSkyBlue RGB565( 0,191,255)
#define colDimGray RGB565(105,105,105)
#define colDodgerBlue RGB565( 30,144,255)
#define colFireBrick RGB565(178, 34, 34)
#define colFloralWhite RGB565(255,250,240)
#define colForestGreen RGB565( 34,139, 34)
#define colFuchsia RGB565(255, 0,255)
#define colGainsboro RGB565(220,220,220)
#define colGhostWhite RGB565(248,248,255)
#define colGold RGB565(255,215, 0)
#define colGoldenRod RGB565(218,165, 32)
#define colGray RGB565(127,127,127)
#define colGreen RGB565( 0,128, 0)
#define colGreenYellow RGB565(173,255, 47)
#define colHoneyDew RGB565(240,255