Современная электроника №9/2018
ИНЖЕНЕРНЫЕ РЕШЕНИЯ 56 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 9 2018 Повышение разрешающей способности АЦП микроконтроллера EFM8LB12 Часть 2 Во второй части статьи описаны программные средства сопряжения микроконтроллера EFM8LB12F64 с компьютером посредством интерфейса USB с помощью изолированных преобразователей USB-SPI на базе микроконтроллера EFM8UB10 и цифровых изоляторов ADUM3160 и SI8662, а также приведены результаты измерений, подтверждающие повышение разрешающей способности АЦП. Алексей Кузьминов (compmicrosys@mail.ru ) П РОГРАММНЫЕ СРЕДСТВА Программная часть проекта вклю- чает в себя программу для компьюте- ра, обеспечивающую приём/передачу данных по интерфейсу USB; программу микроконтроллера UB10 для работы в преобразователе интерфейсов USB-SPI; программу микроконтроллера LB12 для работы с его АЦП и передачи данных по интерфейсу SPI. Далее будут описаны основные прин- ципы и алгоритмы работы программ (их исходные тексты и сами оттран- слированные программы приведены в дополнительных материалах к ста- тье на сайте www.soel.ru) . Сначала несколько слов о том, что представляет собой сумма 2048 чисел и как из этой суммы получить усред- нённое значение. Шестнадцатеричное представление числа 2048 10 есть чис- ло 0x800 (0x7FF+1), а максимальное значение суммы из 2048 двухбайтных чисел равно 0x7FFFFFF. Для получения 19-разрядного кода, максимальное зна- чение которого равно 0x7FFFF, число 0x7FFFFFF необходимо сдвинуть впра- во ровно на 1 байт, что соответствует осреднению по 256 значениям. При этом число 0x7FFFF нельзя передать по однобайтному интер- фейсу, каковым является SPI, поэто- му в программе для микроконтролле- ра используется совмещение (union) одного длинного беззнакового целого числа типа unsigned long ADC0.UL дли- ной 4 байта с массивом из 4 однобайт- ных беззнаковых целых чисел типа unsigned char ADC0.BT [0] …ADC0.BT [3], где последний элемент содержит млад- ший байт числа. Это совмещение рас- пределяет одно и то же место в памяти микроконтроллера для хранения чис- ла ADC0.UL и массива ADC0.BT[ 3] и не требует преобразования одного длин- ного целого в 4 однобайтных числа и обратно. С другой стороны, такой под- ход позволяет использовать при рас- чёте суммы 2048 чисел длинное целое число, а для передачи по интерфей- су SPI – 4 однобайтных числа. Таким образом, если ADC0.UL =0x7FFFFFF, то ADC0.BT [0]=0x7F, ADC0.BT [1]=0xFF, ADC0.BT [2]=0xFF, ADC0.BT [3]=0xFF. Вместо того чтобы сдвигать всё чис- ло ADC0.UL вправо на 1 байт, достаточ- но передавать по интерфейсу SPI толь- ко ADC0.BT [0], ADC0.BT[ 1] и ADC0.BT [2], отбрасывая ADC0.BT [3], т.к. этот эле- мент при сдвиге обнуляется (теряется). Число ADC0.UL= 0x7ffff=524 287 10 , a с учётом нулевого значения общее коли- чество отсчётов будет на 1 больше, т.е. 524 288. Поэтому, для того чтобы полу- чить напряжение в вольтах, необходи- мо умножить число ADC0.UL на V ref и разделить на 524 288: U =ADC0.UL × V ref / /524 288 =ADC0.UL × 2,4/524 288 при V ref = =2,4В. Все предыдущие рассуждения касались однократного суммирования, или, други- ми словами, однократного осреднения всех 2048 чиселпри N =1, где N –количе- ствоосреднений. Еслиже произвестидву- кратное осреднение ( N =2), т.е. получить два числа ADC0.UL , сложить их между собойиразделить на 2, тоих сумма будет равна Summa= (ADC0.UL[ 1] +ADC0.UL[ 2])/2. Вместо деленияна 2, число Summaможно сдвинуть вправона 1бит, при N =4число нужно сдвинуть вправо на 2 бита, а при N =8 – на 3 бита. Именно на таком прин- ципе построена программа для микро- контроллера F067, имеющего16-разряд- ный АЦП [1]. В данном случае АЦПLB12 14-разрядный. Максимальное значение 14-разрядногочисла равно0x3FFF, что в 4разаменьшемаксимального значения 16-разрядного кода (0xFFFF), поэтому для получения 19-битного результа- та (0x7FFFF) необходимо произве- сти 4-кратное осреднение ( N =4). При 8-кратном осреднении результат необ- ходимо сдвинуть вправо на 1 бит, при 16-кратном – на 2 бита, а при 32-крат- ном – на 3 бита. Однако при 2-кратном осреднении 19-разрядный результат может быть получен, если сумму сдви- нуть на 1 бит влево, а при однократ- ном– если сумму сдвинуть влево уже на 2 бита. На таком принципе и построена программа для LB12. Передача 3 байт ADC0.BT [0] …ADC0.BT [2] по интерфейсу SPI организована аналогично F067, как описано ранее. Оценим время, требующееся микро- контроллеру LB12 для однократного осреднения. Как будет показано далее, время одного аналого-цифрового пре- образования и автоматической записи в память XRAM его результата для LB12 при тактовой частоте 72 МГц состав- ляет 1,11 мкс (частота 900 кГц). Если производится 2048 преобразований, то такая процедура потребует време- ни 1,11 × 2048 ≈ 2,27 мс. Суммирование двух четырёхбайтных чисел, как было показано в [1], занима- ет не менее 30 тактов, а суммирова- ние 2048 чисел потребует 30 × 2048= =61 440 тактов. При тактовой часто- те 72 МГц время суммирования соста- вит 61 440/72 000 000=0,85 мс. Таким образом, общее время составит 2,27+ +0,85=3,12 мс. Если предполагается проводить измерения по 8 каналам, то это время будет в 8 раз больше и соста- вит 0,025 с. В реальных условиях это время чуть меньше и составляет око- ло 0,022 с (см. далее) при N =1. Таким образом, интервал времени измере- ния Δ t можно задавать со следующей дискретностью: 0,025; 0,05; 0,1; 0,2; 0,5 и 1 с. Другими словами, задав интер- валы времени с такой дискретностью, можно быть уверенным, что LB12 успе- ет произвести аналого-цифровые пре- образования и, соответственно, 1, 2, 4, 8, 16 и 32 осреднения по 8 каналам. В программе для F067 данные интерва- лы составляли 0,1; 0,2; 0,5 и 1 с [1].
RkJQdWJsaXNoZXIy MTQ4NjUy