МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
/
Кафедра ЕОМ
Курсова робота
з курсу «Мікропроцесорні системи»
на тему:
«Проектування мікрокомп’ютера»
ТЕХНІЧНЕ ЗАВДАННЯ
Варіант №13
Початкові дані
Спроектувати мікрокомп’ютер на основі мікропроцесора STR755. Мікрокомп’ютер повинен містити такі основні вузли:
Центральний процесор:
мікроконтролер;
вузол початкової установки (ПУ);
вузол синхронізації;
Оперативна пам’ять (ОЗП);
Підсистема вводу-виводу (ПВВ).
Початкові дані:
1. Тип мікропроцесора: STR755.
2. Постійна пам'ять: Flash пам’ять пристрою.
3. Підсистема вводу-виводу: АЦП.
АНОТАЦІЯ
В даній курсовій роботі розроблено мікрокомп’ютер на базі мікропроцесора STR755.
В якості підсистеми вводу-виводу використано АЦП.
Розроблено вузол синхронізації та вузол скиду.
Спроектовано функціональну та принципову електричні схеми та реалізовано програмну частину системи.
В теоретичних відомостях описано призначення, будова та основні характеристики мікропроцесора та пам’яті.
ЗМІСТ
Технічне завдання 2
АНОТАЦІЯ 3
Зміст 4
Вступ 6
1. Основні технічні характеристики вузлів системи 7
1.1. Мікроконтролер. 7
1.1.1. Основні характеристики: 7
1.1.2. Мікропроцесор ARM7TDMI-S™ 32-bit MCU з флеш пам’яттю: 8
1.1.3. Структурна схема мікроконтролера STR755: 8
1.1.4. Карта памяті: 9
1.1.5. Система команд: 9
1.1.6. Контролер DMA: 10
1.1.7. Послідовний інтерфейс пам'яті (SMI): 10
1.1.8. Лічильник реального часу RTC: 11
1.1.9. WDG таймер: 11
1.1.10. Шина I2C: 11
1.1.11. Універсальна послідовна шина (USB): 11
1.1.12. Аналого-цифровий перетворювач (АЦП): 11
1.1.13. Вузол синхронізації (PPL): 11
1.1.14. Вузол початкової установки (Reset): 12
1.1.15. Призначення контактів: 13
1.1.16. Конструкторське зображення мікросхеми: 18
1.2. Периферійний пристрій (АЦП): 19
2. Розробка схеми електричної функціональної. 21
2.1. Загальна схема мікрокомп’ютера. 21
2.2. Функціональна схема. 21
3.Проектування схеми електричної принципової. 23
3.1. Проектування вузла синхронізації. 23
3.2. Проектування вузла скиду. 24
3.3 Проектування принциповоъ схеми мікрокомп’ютера 25
4. Розробка програмної частини системи. 26
4.1. Опис програми. 26
4.2. Розробка програми. 28
Висновок 29
Список літератури 30
Додаток А. Лістинг програми. 31
ВСТУП
З розвитком сучасної науки, промислових та мобільних технологій виникає потреба в обробці великих масивів даних. Із підвищенням вимог до надійності та швидкості роботи, від мікроконтролерів вимагають високу обчислювальну потужність, збільшену пам'ять програм та даних а також низьке енергоспоживання.
Сучасні мікроконтролери повністю задовольняють усі ці вимоги та дозволяють реалізувати проект практично будь-якої складності - від вимірювальних пристроїв до технічних систем спеціального призначення (військова промисловість, авіація, автомобілі і т.д).
Основною метою курсової роботи є розробка високопродуктивної мікропроцесорної системи, здатної ефективно вирішувати поставлені перед нею завдання.
Реалізація поставленого завдання проводиться за допомогою процесора STR755, постійної та оперативної пам’яті а також периферійного вузла І2С. Така реалізація є доцільною, оскільки технічні характеристики даної конфігурації повністю задовільняють вимоги розроблюваної системи.
Дане технічне рішення може застосовуватися у різноманітних галузях, зокрема у промисловості, побутовій та комп’ютерній техніці.
1. ОСНОВНІ ТЕХНІЧНІ ХАРАКТЕРИСТИКИ ВУЗЛІВ СИСТЕМИ
1.1. Мікроконтролер.
1.1.1. Основні характеристики:
Серія: STR755FXX;
Процесор: ARM7TDMI-S;
Розрядність ядра: 32 біт;
Тактова частота: 60MHz;
Розрядність АЦП: 10 біт;
Контролер переривань: вкладений із 32 перериваннями;
Число портів вводу-виводу: до 38;
DMA: 4-канальний контролер DMA;
Flash пам`ять программ: до 256 Кбайт;
Живлення: 3.3V±10% або 5V±10%;
SRAM: 16 Кбайт;
Таймери: 3 std 16-bit, PVM, WDG;
Інтерфейси: I2C, UART, SSP, USB, CAN.
/
Рис. 1. Огляд Мікроконтролера.
1.1.2. Мікропроцесор ARM7TDMI-S™ 32-bit MCU з флеш пам’яттю:
Сімейство STR755F має вбудоване ядро ARM, отже, сумісна з усіма ARM інструментами і програмним забезпеченням. Вона поєднує в собі високу продуктивність процесора ARM7TDMI-S з великим набором периферійних функцій і розширеними можливостями введення / виведення. Всі пристрої мають на кристалі високошвидкісну FLASH - пам'ять і високошвидкісну оперативну пам'ять.
1.1.3. Структурна схема мікроконтролера STR755:
/
1.1.4. Карта памяті:
Мікроконтролер має 16Кбайт вбудованої високошвидкісної SRAM пам’яті, 16Кбайт RWW пам’яті даних та 256Кбайт флеш пам'яті програм. Карта пам'яті зображена на рисунку 1.1.
/
Рис. 1.1 Карта памяті.
1.1.5. Система команд:
- 80 інструкцій, розмір однієї інструкції – 2 байти;
- стандартні операції над даними та логічні/арифметичні функції;
- 8 на 8 біт множення;
- 16 на 8 та 16 на 16 біт ділення;
- передача даних між стеком та акумулятор з прямим доступом;
Таблиця 1.1. Система команд.
/
1.1.6. Контролер DMA:
Гнучкий 4-канальний DMA загального призначення може направляти пам'ять в пам'ять, периферію в пам'яті і пам'ять в периферійні перекази. DMA контролер підтримує кругове управління буфером щоб можна було уникнути створення переривання, коли контролер досягне кінця буферу.
DMA можуть бути використані з основними периферійними пристроями: SSP0, Motor control PWM таймером (PWM), стандартним таймером TIM0 і АЦП.
1.1.7. Послідовний інтерфейс пам'яті (SMI):
Послідовний інтерфейс пам'яті може безпосередньо отримати доступ до чотирьох послідовних флеш-пристроїв. Він може використовуватись для доступу до даних, безпосереднього виконання коду або завантаження програм із зовнішньої пам'яті. Пам'ять адресується як чотири блоки до 16 Мбайт кожен.
1.1.8. Лічильник реального часу RTC:
Годинник реального часу надає набір безперервно працюючих лічильників, які можуть бути використані з відповідним програмним забезпеченням, щоб надати годинник з календарем функцій, а також забезпечити сигнальні переривання і періодичні переривання. Він працює з тактовою частотою 32.768 кГц від зовнішнього генератора або внутрішнього RC генератора малої потужності. RC має типову частоту 300 кГц і може бути відкалібрований.
1.1.9. WDG таймер:
WDG таймер базується на основі 16-бітного зворотного лічильника і 8-бітного подільника. Він може бути використаний як сторожовий таймер для скидання пристрою у випадку виникнення проблем, або як вільний біжучий таймер для прикладного тайм-аут управління.
1.1.10. Шина I2C:
Інтерфейс шини I2C може працювати в режимі мульти-майстра і в режимі раба. Він може підтримувати стандартний і швидкий режими (до 400 кГц).
1.1.11. Універсальна послідовна шина (USB):
Інтерфейс USB реалізує повну швидкість (12 Мбіт/с) функція інтерфейсу. Він має працює як додатковий роз’єм, для підключення периферії.
1.1.12. Аналого-цифровий перетворювач (АЦП):
10-бітний аналого-цифровий перетворювач, перетворює до 16 зовнішніх каналів (11 каналів в 64-контактних пристроях) в однократному або в режимі сканування. У режимі сканування, безперервне перетворення здійснюється на обраній групі аналогових входів. Мінімальний час перетворення 3,75 мкс (в тому числі часу вибірки). АЦП може бути поданий контролером DMA.
1.1.13. Вузол синхронізації (PPL):
В мікроконтролері STR755FXX OSCIN (XTAL1) і OSCOUT (XTAL2) є входом і виходом, відповідно, інвертуючого підсилювача, який з використанням кварцового кристала або керамічного резонатора працює як вбудований генератор, як показано на рисунку 1.2.
/
Рис.1.2. Схема вузла синхронізації.
1.1.14. Вузол початкової установки (Reset):
Операція початкового скидання виконується автоматично, при ввімкненні живлення. Для виконання ручного скиду до входу RESET потрібно під єднати відповідний перемикач.
/
Рис. 1.3. Схема підключення вузла скиду.
1.1.15. Призначення контактів:
Виводи мікроконтролера STR755 у корпусі LQFP64 зображено на рисунку 1.4, а їх призначення – в таблиці 1.2. /
Рис. 1.4. Діаграма контактів STR755FXX.
Таблиця 1.2. Призначення контактів.
/
/
/
/
/
1.1.16. Конструкторське зображення мікросхеми:
/
Рис.1.5. Конструкторське зображення STR755.
1.2. Периферійний пристрій (АЦП):
Аналого-цифрові перетворювачі (АЦП) є пристроями, які приймають вхідні аналогові сигнали і генерують відповідні їм цифрові сигнали, придатні для обробки мікропроцесорами та іншими цифровими пристроями.
Принципово не виключена можливість безпосереднього перетворення різних фізичних величин в цифрову форму, проте це завдання вдається вирішити лише в рідкісних випадках через складність таких перетворювачів. Тому в даний час найбільш раціональним визнається спосіб перетворення різних за фізичною природою величин спочатку у функціонально пов'язані з ними електричні, а потім вже за допомогою перетворювачів напруга-код - в цифрові. Саме ці перетворювачі мають зазвичай на увазі, коли говорять про АЦП.
Процедура аналого-цифрового перетворення безперервних сигналів, яку реалізують за допомогою АЦП, являє собою перетворення неперервної функції часу U (t), яка описує вихідний сигнал, в послідовність чисел {U '(t j)}, j = 0,1,2,: , віднесених до деяких фіксованим моментів часу. Цю процедуру можна розділити на дві самостійні операції. Перша з них називається дискретизацією і полягає в перетворенні безперервної функції часу U (t) в безперервну послідовність {U (t j)}. Друга називається квантуванням і полягає в перетворенні безперервної послідовності в дискретну {U '(t j)}.
В основі дискретизації безперервних сигналів лежить принципова можливість подання їх у вигляді зважених сум де a j - деякі коефіцієнти або відліки, що характеризують вихідний сигнал в дискретні моменти часу; f j (t) - набір елементарних функцій, що використовуються при відновленні сигналу за його відліками.
Найбільш поширеною формою дискретизації є рівномірна, в основі якої лежить теорема відліків. Відповідно до цієї теореми в якості коефіцієнтів a j слід використовувати миттєві значення сигналу U (t j) в дискретні моменти часу t j = j D t, а період дискретизації вибирати з умови
D t = 1/2F m, де F m - максимальна частота спектра преутвореного сигналу. При цьому вираз (1) переходить в відомий вислів теореми відліків
Для сигналів із суворо обмеженим спектром цей вислів є тотожністю. Однак спектри реальних сигналів прагнуть до нуля лише асимптотично. Застосування рівномірної дискретизації до таких сигналів призводить до виникнення в системах обробки інформації специфічних високочастотних спотворень, обумовлених вибіркою. Для зменшення цих спотворень необхідно або збільшувати частоту дискретизації, або використовувати перед АЦП додатковий фільтр нижніх частот, що обмежує спектр вихідного сигналу перед його аналого-цифровим перетворенням.
У загальному випадку вибір частоти дискретизації буде залежати також від використовуваного в (1) виду функції f j (t) і допустимого рівня похибок, що виникають при відновленні вихідного сигналу за його відліками. Все це слід брати до уваги при виборі частоти дискретизації, яка визначає необхідну швидкодію АЦП. Часто цей параметр задають розробнику АЦП.
В даному випадку курсової роботи було використано АЦП мікроконтролера, на який подано цифровий сигнал, з частотою 40КГц. Результати перетворень виводяться за допомогою роз’му USB.
2. РОЗРОБКА СХЕМИ ЕЛЕКТРИЧНОЇ ФУНКЦІОНАЛЬНОЇ.
2.1. Загальна схема мікрокомп’ютера.
Завдяки високій інтеграції побудова мікрокомп'ютера на основі процесора STR755 не вимагає під'єднання великої кількості додаткових пристроїв. Тому основні вузли, які потрібно спроектувати в схемі, це: зовнішня постійна пам'ять, вузол синхронізації та вузол початкової установки, інтерфейс I2C. Загальна структурна схема мікрокомп'ютера представлена на рисунку 2.1.
Рис.2.1. Загальна структурна схема мікрокомп’ютера.
2.2. Функціональна схема.
Мікрокомп’ютер складається з зовнішньої пам’яті, мікропроцесора, вузла скиду і синхронізації, а також з вузла периферії, через яку в даному випадку і підключена зовнішня пам'ять.
Вузол скиду призначений для затримки сигналу на деякий час, для того щоб мікропроцесорні пристрої встигли перезавантажитись та встановитись в початковий режим роботи. Сигнал RESET спрацьовує по високому логічному рівні та використовується для початкового скидання та ініціалізації процесора.
Вузол синхронізації призначений для формування тактових сигналів, які забезпечують функціонування усіх вузлів мікропроцесора. Він під’єднюється до мікропроцесора за допомогою виводів XT1 і XT2. Функціональна схема зображена на рисунку 2.2.
/
Рис. 2.2. Функціональна схема
3.ПРОЕКТУВАННЯ СХЕМИ ЕЛЕКТРИЧНОЇ ПРИНЦИПОВОЇ.
3.1. Проектування вузла синхронізації.
В мікроконтролері STR755 XT1 і XT2 є входом і виходом, відповідно, інвертуючого підсилювача, який з використанням кварцового кристала або керамічного резонатора працює як вбудований генератор, як показано на рисунку 3.1.
/
Рис. 3.1. Вузол синхронізації на базі кварцового генератора.
Кварцовий кристал генератора таймера під’єднюється безпосередньо до виведень XT1 і XT2. Додаткові зовнішні конденсатори не потрібні. Генератор оптимізований під часовий кварц з частотою 32,768 КГц. Зовнішній тактовий сигнал, який подається на ці виводи, поступає на підсилювач зі смугою пропускання 256 КГц. Таким чином частота зовнішнього сигналу повинна знаходитися в діапазоні від 0 до 256 КГц.
3.2. Проектування вузла скиду.
При ввімкненні живлення мікроконтролер STR755 виконує операцію початкового скидання автоматично, при чому посилає сигнал RESET всій системі. Така операція називається “power-on-reset” ”(POR). Затримка POR забезпечує достатній час, щоб перезавантажити всі функціональні вузли мікроконтролер та дозволити ініціювати коректно всі складові частини після ввімкнення живлення.
Щоб реалізувати схему „ручного” скиду мікроконтролера потрібно під'єднати до входу Reset, як показано на рисунку 3.2, відповідний перемикач.
/
Рис. 3.2. Схема ручного формування сигналу RESET.
Reset має найвищий пріоритет з усіх переривань і перериває будь-яку операцію, що виконується. Лічильник команд PC встановлюється в значення 0000H і вибірка команд відбувається з зовнішньої пам'яті програм за цією адресою.
3.3 Проектування принциповоъ схеми мікрокомп’ютера
На основі усіх вище описаних елементів, елементів напруги, вхідних та вихідних сигналів для АЦП, було спроектовано функціональну схему, яку зображено на рис. 3.3.
/
Рис. 3.3 Схема підключення АЦП
4. РОЗРОБКА ПРОГРАМНОЇ ЧАСТИНИ СИСТЕМИ.
4.1. Опис програми.
Програма для отримання даних через АЦП написана на мові C, лістинг програми навдено в додатку А. На рис. 4.2 наведена граф-схема алгоритму роботи програми. Алгоритм передбачає початкову ініціалізацію після скиду за допомогою вузла RESET, ініціалізацію адрес і даних, інііалізацію Ацп за допомогою драйверу, та опрацювання вхідних сигналів. Програмування контролера було виконано за допомогою програми Atmel Studio.
Рис. 4.2. Блок-схема роботи алгоритму програми.
Atmel Studio (до 6 версії AVR Studio) — інтегроване середовище розробки для програмування та відлагодження програм для мікроконтролерів AVR та AVR32 в операційних системах Windows. Після шостої версії середовище може працювати як і з AVR-контролерами, так і з системами з ARM-архітектурою.
Atmel Studio містить в собі такі інструмени, як вбудований C/C++-компілятор, симулятор мікропроцесорної системи для відлагодження програм, менеджер проектів, редактор коду, модуль внутрішньосхемного відлагодження, а також інтерфейс командного рядка. Крім стандартних елементів, середовище підтримує ряд інших інструментів, таких як компілятор GCC та плагін AVR RTOS (операційної системи реального часу). Крім C/C++, середовище дозволяє програмувати також на асемблері.
/
Рис. 4.1 Середовище розробки Atmel Studio.
4.2. Розробка програми.
Програма призначена для роботи мікроконтролера із зовнішньою памя’ттю та прийому даних з АЦП.
Дані в мікроконтролері знаходяться у внутрішній флеш пам’яті, опрацювання їх відбувається за допомогою високошвидкісної SDRAM.
В програмі ініціалізації першим кроком є ініціалізація функціональних регістрів та визначення режиму синхронізації мікроконтролера, на лаштування його робочої частоти.
Для того, щоб з'єднати процесор з АЦП, потрібно налаштувати послідовний порт на відповідний режим роботи, визначити канал передачі. При визначенні пріоритетів переривань потрібно вказати найвищий пріоритет для вектора переривання АЦП.
При розробці програми було використано драйвер для АЦП, для того, щоб була можливість опрацьовування аналогового сигналу.
Код розробленої програми подано в додатку А.
ВИСНОВОК
При створенні мікрокомп’ютера використовувався мікроконтролер STК755. Висока швидкодія, велика інтеграція, наявність вбудованих пристроїв обробки інформації робить цей процесор вигідним при використанні в різних галузях. Мікроконтролер використовується в системах контролю за різними фізичними процесами, вимірювальних системах, також можливе використання в побутових електротехнічних приладах.
В розробленому мікрокомп’ютері до мікроконтролера, через послідовний інтерфейс І2С приєднано зовнішню пам’ять (пам’ять програм і пам’ять даних) типу EEPROM, що надає можливість завантажувати більшого обсягу програми. Розроблений мікрокомп’ютер може використовуватись в різних обчислювальних системах. А якості периферії використано 10 бітний АЦП, для отримання даних з якого розроблена програма.
В курсовій роботі представлено теоретичні відомості про мікроконтролер STR755, розроблено функціональну та принципову схеми підключення пам’яті даних та програм, а також розроблено програмну реалізацію паралельного інтерфейсу.
Робота над курсовим проектом показала переваги використання інтегральних мікросхем передових технологій завдяки їх великій інтеграції, швидкодії, надійності, простоті у проектуванні; їх використання спрощує проект, що в свою чергу зменшує ціну готового виробу.
СПИСОК ЛІТЕРАТУРИ
1. http://atmel.com/
2. Конспект лекцій з курсу “Мікропроцесорні системи”(
3. Микропроцессоры и микропроцессорные комплекты интегральных микросхем : Справочник. В 2 т. / В.-Б. Б. Абрайтис, Н. Н. Аверьянов, А. И. Белоус и др.; Под ред. В. А. Шахнова. – М.: Радио и связь, 1988. – Т.1. – 368 с.: ил.
4. Цифровые и аналоговые интегральные микросхемы : Справочник / С. В. Якубовский, Л. И. Ниссельсон, В. И. Кулешова и др.; Под ред. С. В. Якубовского. – М.: Радио и связь, 1990. – 496 с.: ил.
5. Методичны вказівки до виконання курсової роботи.
Додаток А. Лістинг програми.
#include "adc.h"
static bool _adcInitialised = false;
/**************************************************************************/
/*!
@brief Returns the conversion results on the specified ADC channel.
This function will manually start an A/D conversion on a single
channel and return the results.
@param[in] channelNum
The A/D channel [0..7] that will be used during the A/D
conversion. (Note that only A/D channel's 0..3 are
configured by default in adcInit.)
@return 0 if an overrun error occured, otherwise a 10-bit value
containing the A/D conversion results.
@warning Only AD channels 0..3 are configured for A/D in adcInit.
If you wish to use A/D pins 4..7 they will also need to
be added to the adcInit function.
*/
/**************************************************************************/
uint32_t adcRead (uint8_t channelNum)
{
if (!_adcInitialised) adcInit();
uint32_t regVal, adcData;
/* make sure that channel number is 0..7 */
if ( channelNum >= 8 )
{
// ToDo: Change this to throw an exception back
channelNum = 0;
}
/* deselect all channels */
ADC_AD0CR &= ~ADC_AD0CR_SEL_MASK;
/* switch channel and start converting */
ADC_AD0CR |= (ADC_AD0CR_START_STARTNOW | (1 << channelNum));
/* wait until end of A/D convert */
while ( 1 )
{
// Get data register results for the requested channel
switch (channelNum)
{
case 0:
regVal = (*(pREG32(ADC_AD0DR0)));
break;
case 1:
regVal = (*(pREG32(ADC_AD0DR1)));
break;
case 2:
regVal = (*(pREG32(ADC_AD0DR2)));
break;
case 3:
regVal = (*(pREG32(ADC_AD0DR3)));
break;
case 4:
regVal = (*(pREG32(ADC_AD0DR4)));
break;
case 5:
regVal = (*(pREG32(ADC_AD0DR5)));
break;
case 6:
regVal = (*(pREG32(ADC_AD0DR6)));
break;
case 7:
regVal = (*(pREG32(ADC_AD0DR7)));
break;
default:
regVal = (*(pREG32(ADC_AD0DR0)));
break;
}
// Set channel in AD0CR
ADC_AD0CR = ((1 << channelNum) | /* SEL=1,select channel 0 on ADC0 */
(((CFG_CPU_CCLK / SCB_SYSAHBCLKDIV) / 1000000 - 1 ) << 8) | /* CLKDIV = Fpclk / 1000000 - 1 */
ADC_AD0CR_BURST_SWMODE | /* BURST = 0, no BURST, software controlled */
ADC_AD0CR_CLKS_10BITS | /* CLKS = 0, 11 clocks/10 bits */
ADC_AD0CR_START_NOSTART | /* START = 0 A/D conversion stops */
ADC_AD0CR_EDGE_RISING); /* EDGE = 0 (CAP/MAT signal falling, trigger A/D conversion) */
/* read result of A/D conversion */
if (regVal & ADC_DR_DONE)
{
break;
}
}
/* stop ADC */
ADC_AD0CR &= ~ADC_AD0CR_START_MASK;
/* return 0 if an overrun occurred */
if ( regVal & ADC_DR_OVERRUN )
{
return (0);
}
/* return conversion results */
adcData = (regVal >> 6) & 0x3FF;
return (adcData);
}
/**************************************************************************/
/*!
@brief Initialises the A/D converter and configures channels 0..3
for 10-bit, SW-controlled A/D conversion.
@return Nothing
@warning Depending on what board you are using, you may need to
configure AD6 and AD7 instead of AD2 and AD3:
LPC1114 Reference Design Board: AD0, AD1, AD6, AD7
LPC1114 802.15.4 Wireless Board: AD0, AD1, AD2, AD3
*/
/**************************************************************************/
void adcInit (void)
{
/* Disable Power down bit to the ADC block. */
SCB_PDRUNCFG &= ~(SCB_PDRUNCFG_ADC);
/* Enable AHB clock to the ADC. */
SCB_SYSAHBCLKCTRL |= (SCB_SYSAHBCLKCTRL_ADC);
/* Digital pins need to have the 'analog' bit set in addition
to changing their pin function */
/* Set AD0 to analog input */
IOCON_JTAG_TDI_PIO0_11 &= ~(IOCON_JTAG_TDI_PIO0_11_ADMODE_MASK |
IOCON_JTAG_TDI_PIO0_11_FUNC_MASK |
IOCON_JTAG_TDI_PIO0_11_MODE_MASK);
IOCON_JTAG_TDI_PIO0_11 |= (IOCON_JTAG_TDI_PIO0_11_FUNC_AD0 &
IOCON_JTAG_TDI_PIO0_11_ADMODE_ANALOG);
/* Set AD1 to analog input */
IOCON_JTAG_TMS_PIO1_0 &= ~(IOCON_JTAG_TMS_PIO1_0_ADMODE_MASK |
IOCON_JTAG_TMS_PIO1_0_FUNC_MASK |
IOCON_JTAG_TMS_PIO1_0_MODE_MASK);
IOCON_JTAG_TMS_PIO1_0 |= (IOCON_JTAG_TMS_PIO1_0_FUNC_AD1 &
IOCON_JTAG_TMS_PIO1_0_ADMODE_ANALOG);
#ifdef CFG_BRD_LPC1114_802154WIRELESS
/* Set AD2 to analog input */
IOCON_JTAG_TDO_PIO1_1 &= ~(IOCON_JTAG_TDO_PIO1_1_ADMODE_MASK |
IOCON_JTAG_TDO_PIO1_1_FUNC_MASK |
IOCON_JTAG_TDO_PIO1_1_MODE_MASK);
IOCON_JTAG_TDO_PIO1_1 |= (IOCON_JTAG_TDO_PIO1_1_FUNC_AD2 &
IOCON_JTAG_TDO_PIO1_1_ADMODE_ANALOG);
/* Set AD3 to analog input */
IOCON_JTAG_nTRST_PIO1_2 &= ~(IOCON_JTAG_nTRST_PIO1_2_ADMODE_MASK |
IOCON_JTAG_nTRST_PIO1_2_FUNC_MASK |
IOCON_JTAG_nTRST_PIO1_2_MODE_MASK);
IOCON_JTAG_nTRST_PIO1_2 |= (IOCON_JTAG_nTRST_PIO1_2_FUNC_AD3 &
IOCON_JTAG_nTRST_PIO1_2_ADMODE_ANALOG);
#endif
#ifdef CFG_BRD_LPC1114_REFDESIGN
/* Set AD6 to analog input */
IOCON_PIO1_10 &= ~(IOCON_PIO1_10_ADMODE_MASK |
IOCON_PIO1_10_FUNC_MASK |
IOCON_PIO1_10_MODE_MASK);
IOCON_PIO1_10 |= (IOCON_PIO1_10_FUNC_AD6 &
IOCON_PIO1_10_ADMODE_ANALOG);
/* Set AD7 to analog input */
IOCON_PIO1_11 &= ~(IOCON_PIO1_11_ADMODE_MASK |
IOCON_PIO1_11_FUNC_MASK |
IOCON_PIO1_11_MODE_MASK);
IOCON_PIO1_11 |= (IOCON_PIO1_11_FUNC_AD7 &
IOCON_PIO1_11_ADMODE_ANALOG);
#endif
/* Note that in SW mode only one channel can be selected at a time (AD0 in this case)
To select multiple channels, ADC_AD0CR_BURST_HWSCANMODE must be used */
ADC_AD0CR = (ADC_AD0CR_SEL_AD0 | /* SEL=1,select channel 0 on ADC0 */
(((CFG_CPU_CCLK / SCB_SYSAHBCLKDIV) / 1000000 - 1 ) << 8) | /* CLKDIV = Fpclk / 1000000 - 1 */
ADC_AD0CR_BURST_SWMODE | /* BURST = 0, no BURST, software controlled */
ADC_AD0CR_CLKS_10BITS | /* CLKS = 0, 11 clocks/10 bits */
ADC_AD0CR_START_NOSTART | /* START = 0 A/D conversion stops */
ADC_AD0CR_EDGE_RISING); /* EDGE = 0 (CAP/MAT signal falling, trigger A/D conversion) */
/* Set initialisation flag */
_adcInitialised = true;
return;
}
#include "core/cpu/cpu.h"
void main (void)
{
cpuInit();
adcInit();
uint32_t results = 0;
while(1)
{
// Get A/D conversion results from A/D channel 0
results = adcRead(0);
}
}