Термосенсор: различия между версиями

Материал из MIK32 микроконтроллер
 
(не показано 9 промежуточных версий этого же участника)
Строка 40: Строка 40:
|TSENS_TRESHOLD
|TSENS_TRESHOLD
|0x20
|0x20
|0x0
|
|Регистр пороговых значений
|Регистр пороговых значений
|RW
|RW
Строка 73: Строка 73:
|Регистр запуска непрерываного измерения
|Регистр запуска непрерываного измерения
|WO
|WO
|-
|REF_CLB
|0x38
|0x01
|Управление калибруемыми источниками тока и напряжения
|RW
|}
|}


==== Описание регистров ====
==== Описание регистров ====


===== TSENS_CFG   =====
===== TSENS_CFG =====
Смещение: 0x1C - регистр настройки термодатчика. Значение после подачи сброса: 0x00000000;
{| class="wikitable"
|31
|30
|29
|28
|27
|26
|25
|24
|23
|22
|21
|20
|19
|18
|17
|16
|-
| colspan="16" |Зарезервировано
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}
{| class="wikitable"
|15
|14
|13
|12
|11
|10
|9
|8
|7
|6
|5
|4
|3
|2
|1
|0
|-
| colspan="10" |Div
| colspan="3" |Clk_mux
|Nreset
|Npd_Clk
|Npd
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}Биты 15:6  '''Div''' - Значение делителя тактового сигнала. Частота сенсора определяется как  T<sub>SENS</sub> = F<sub>IN</sub>/(Div + 1)
 
Биты 5:3  '''Clk_mux''' - Выбор источника тактирвоания сенсора (F<sub>IN</sub>):
 
* 0x0 – системная частота (sys_clk);
* 0x1 – частота шины AHB (hclk);
* 0x2 – частота внешнего осцилятора 32 МГц;
* 0x3 – частота HSI32M;
* 0x4 – частота внешнего осцилятора 32 кГц;
* 0x5 – частота LSI32K
 
Бит 2  '''Nreset''' - Управление сбросом сенсора, активный уровень «0»
 
Бит 1  '''Npd_Clk''' - Управление тактированием сенсора:
 
* 0 – тактирование сенсора выключено;
* 1 –  тактирование сенсора включено
 
Бит 0  '''Npd''' - Управление питанием сенсора:
 
* 0 – сенсор выключен;
* 1 – сенсор включен
 
===== TSENS_TRESHOLD =====
Смещение: 0x20 - пороговый регистр. Значение после подачи сброса:  0x3865B ;
{| class="wikitable"
|31
|30
|29
|28
|27
|26
|25
|24
|23
|22
|21
|20
|19
|18
|17
|16
|-
| colspan="12" |Зарезервировано
| colspan="4" |Low_ Threshold
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}
{| class="wikitable"
|15
|14
|13
|12
|11
|10
|9
|8
|7
|6
|5
|4
|3
|2
|1
|0
|-
| colspan="6" |Low_ Threshold
| colspan="10" |Hi_ Threshold
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}Биты 19:10  '''Low_ Threshold''' - При значении выхода сенсора менее  Low_Threshold  будет формироваться прерывание. Значение по умолчанию соответсвует температуре -40  <sup>о</sup>С. Начальное значение 225.
 
Бит 9:0  '''Hi_ Threshold''' - При значении выхода сенсора больше  Hi_Threshold  будет формироваться прерывание. Значение по умолчанию соответсвует температуре 125  <sup>о</sup>С. Начальное значение 603.
===== TSENS_IRQ =====
Смещение: 0x24 - регистр управления прерываниями. Значение после подачи сброса: 0x00000000;
{| class="wikitable"
|31
|30
|29
|28
|27
|26
|25
|24
|23
|22
|21
|20
|19
|18
|17
|16
|-
| colspan="16" |Зарезервировано
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}
{| class="wikitable"
|15
|14
|13
|12
|11
|10
|9
|8
|7
|6
|5
|4
|3
|2
|1
|0
|-
| colspan="10" |Зарезервировано
|Low_Irq
|Hi_Irq
|Eoc_Irq
|Low_Mask
|Hi_Mask
|Eoc_Mask
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|ro
|ro
|ro
|rw
|rw
|rw
|}Бит 5 '''Low_Irq''' - Статус прерывания события «выход сенсора меньше порогового значения Low_Threshold»
 
Бит 4 '''Hi_Irq''' - Статус прерывания событии «выход сенсора больше порогового значения Hi_Threshold»
 
Бит 3 '''Eoc_Irq''' - Статус прерывания по окончанию преобразования
 
Бит 2 '''Low_Mask''' - Маска прерывания при событии «выход сенсора меньше порогового значения Low_Threshold»
 
Бит 1 '''Hi_Mask''' - Маска прерывания при событии «выход сенсора больше порогового значения Hi_Threshold»
 
Бит 0 '''Eoc_Mask''' - Маска прерывания по окончанию преобразования
 
===== TSENS_CLEAR_IRQ =====
Смещение: 0x28 - регистр калибровочных данных. Значение после подачи сброса: 0x00000000;
{| class="wikitable"
|31
|30
|29
|28
|27
|26
|25
|24
|23
|22
|21
|20
|19
|18
|17
|16
|-
| colspan="15" |Зарезервировано
|
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}
{| class="wikitable"
|15
|14
|13
|12
|11
|10
|9
|8
|7
|6
|5
|4
|3
|2
|1
|0
|-
| colspan="13" |Зарезервировано
|Low_ Clear
|Hi_ Clear
|Eoc_Clear
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|W1C
|W1C
|W1C
|}
Бит 2  '''Low_Clear''' - Сброс прерывания события «выход сенсора меньше порогового значения Low_Threshold»
 
Бит  1 '''Hi_Clear''' - Сброс прерывания событии «выход сенсора больше порогового значения Hi_Threshold»
 
Бит 0 '''Eoc_Clear''' - Сброс прерывания по окончанию преобразования
 
===== TSENS_VALUE =====
Смещение: 0x2С - регистр  данных. Значение после подачи сброса: 0x00000000;
{| class="wikitable"
|31
|30
|29
|28
|27
|26
|25
|24
|23
|22
|21
|20
|19
|18
|17
|16
|-
| colspan="15" |Зарезервировано
|
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}
{| class="wikitable"
|15
|14
|13
|12
|11
|10
|9
|8
|7
|6
|5
|4
|3
|2
|1
|0
|-
| colspan="5" |Зарезервировано
|Eoc
| colspan="10" |Value
|-
|rw
|rw
|rw
|rw
|rw
|ro
|ro
|ro
|ro
|ro
|ro
|ro
|ro
|ro
|ro
|ro
|}Бит 10  '''Eoc''' - Текущее значение выхода окончания преобразования
Биты 9:0  '''Value''' - Последнее измереннное значение сенсором
===== TSENS_SINGLE =====
Смещение: 0x30 - регистр запуска однократного измерения. Значение после подачи сброса: 0x00000000;
{| class="wikitable"
|31
|30
|29
|28
|27
|26
|25
|24
|23
|22
|21
|20
|19
|18
|17
|16
|-
| colspan="15" |Зарезервировано
|
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}
{| class="wikitable"
|15
|14
|13
|12
|11
|10
|9
|8
|7
|6
|5
|4
|3
|2
|1
|0
|-
| colspan="15" |Зарезервировано
|Single
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}Бит 0  '''Single''' - Запуск одного измерения
===== TSENS_ CONTINIUS =====
Смещение: 0x34 - регистр запуска непрерывного измерения. Значение после подачи сброса: 0x00000000;
{| class="wikitable"
|31
|30
|29
|28
|27
|26
|25
|24
|23
|22
|21
|20
|19
|18
|17
|16
|-
| colspan="15" |Зарезервировано
|
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}
{| class="wikitable"
|15
|14
|13
|12
|11
|10
|9
|8
|7
|6
|5
|4
|3
|2
|1
|0
|-
| colspan="15" |Зарезервировано
|Continius
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}Бит 0  '''Continius''' - Управление непрерывным измерением:
 
* 1 - запуск
* 0 - остановка
 
===== REF_CLB =====
Смещение: 0x38 - регистр калибровочных данных. Значение после подачи сброса: 0x00000100;
{| class="wikitable"
|31
|30
|29
|28
|27
|26
|25
|24
|23
|22
|21
|20
|19
|18
|17
|16
|-
| colspan="15" |Зарезервировано
|
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|}
{| class="wikitable"
|15
|14
|13
|12
|11
|10
|9
|8
|7
|6
|5
|4
|3
|2
|1
|0
|-
| colspan="7" |Зарезервировано
|EN
| colspan="4" |Coef_RefIclb
| colspan="4" |Coef_RefVclb
|-
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|rw
|ro
|}Бит 8  '''EN''' - Включение калибровки настройки опорного
 
Бит 7:4  '''Coef_RefIclb''' - Коэффициент настройки тока
 
Бит 3:0  '''Coef_RefVclb''' - Коэффициент настройки напряжения 

Текущая версия от 09:49, 25 августа 2023

Введение

Сенсор преобразует электрические величины, прямо пропорционально зависящие от температуры кристалла, в двоичное представление этой температуры.

Технические характеристики:

  • точность измерения температуры ±0,1 ℃;
  • погрешность измерения температуры в диапазоне [–40 °C; 125 °C] не превышает 1 %;
  • наличие спящего режима с пониженным потреблением тока;
  • функция подстройки для уменьшения влияния разброса техпроцесса.
  • Тактовая частота 32КГц-100КГц

Состав и принцип работы сенсора

Структурная схема представлена на рисунке ниже. Сенсор состоит из блока формирования опорного тока, блока формирования двух напряжений база-эмиттер, сигма-дельта АЦП и регистра накопления результатов АЦП.

Структурная схема сенсора
Структурная схема сенсора

Блок сенсора основан на биполярных транзисторах, так как их технологический разброс параметров мал по сравнению с альтернативами. Для генерации данных о температуре достаточно всего двух транзисторов в диодном включении, управляемых разными токами. Напряжение база-эмиттер Vbe обратно пропорционально температуре (CTAT), а разница напряжений ΔVbe прямо пропорциональна (PTAT). Эти напряжения линейны, а линейная комбинация создает температурно-независимое постоянное напряжение Vref (рисунок и формулы далее), соответствующее ширине запрещенной зоны.

TEMP3.png
Принцип работы сенсора
Принцип работы сенсора

Основное преимущество такой схемы, что формируемое PTAT напряжение не зависимо от технологического процесса и  вычисляется по формуле:

TEMP4.png

Эти напряжения переводятся в базис заряда и используются сигма-дельта АЦП на переключающихся конденсаторах. Плотность потока на выходе АЦП меняется от 0 до 1 в зависимости от температуры и равна согласно равенству зарядов по формуле 16. Сама температура вычисляется в градусах Цельсия по формуле 17, при A= 619,2 и В= -273,15 (константы, следующие из формул далее)

TEMP5.png

Регистры управления

Список регистров

Регистры управления температурным сенсором
Обозначение Смещение Начальное значение Назначение Доступ
TSENS_CFG 0x1C 0x0 Регистр настроек RW
TSENS_TRESHOLD 0x20 Регистр пороговых значений RW
TSENS_IRQ 0x24 0x0 Регистр прерываний RW
TSENS_CLEAR_IRQ 0x28 0x0 Регистр сброса прерываний W1C
TSENS_VALUE 0x2C 0x0 Регистр данных RO
TSENS_SINGLE 0x30 0x0 Регистр запуска однократного измерения WO
TSENS_ CONTINIUS 0x34 0x0 Регистр запуска непрерываного измерения WO
REF_CLB 0x38 0x01 Управление калибруемыми источниками тока и напряжения RW

Описание регистров

TSENS_CFG

Смещение: 0x1C - регистр настройки термодатчика. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Div Clk_mux Nreset Npd_Clk Npd
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Биты 15:6 Div - Значение делителя тактового сигнала. Частота сенсора определяется как  TSENS = FIN/(Div + 1)

Биты 5:3 Clk_mux - Выбор источника тактирвоания сенсора (FIN):

  • 0x0 – системная частота (sys_clk);
  • 0x1 – частота шины AHB (hclk);
  • 0x2 – частота внешнего осцилятора 32 МГц;
  • 0x3 – частота HSI32M;
  • 0x4 – частота внешнего осцилятора 32 кГц;
  • 0x5 – частота LSI32K

Бит 2 Nreset - Управление сбросом сенсора, активный уровень «0»

Бит 1 Npd_Clk - Управление тактированием сенсора:

  • 0 – тактирование сенсора выключено;
  • 1 –  тактирование сенсора включено

Бит 0 Npd - Управление питанием сенсора:

  • 0 – сенсор выключен;
  • 1 – сенсор включен
TSENS_TRESHOLD

Смещение: 0x20 - пороговый регистр. Значение после подачи сброса: 0x3865B ;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано Low_ Threshold
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Low_ Threshold Hi_ Threshold
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Биты 19:10 Low_ Threshold - При значении выхода сенсора менее  Low_Threshold  будет формироваться прерывание. Значение по умолчанию соответсвует температуре -40  оС. Начальное значение 225.

Бит 9:0 Hi_ Threshold - При значении выхода сенсора больше  Hi_Threshold  будет формироваться прерывание. Значение по умолчанию соответсвует температуре 125  оС. Начальное значение 603.

TSENS_IRQ

Смещение: 0x24 - регистр управления прерываниями. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано Low_Irq Hi_Irq Eoc_Irq Low_Mask Hi_Mask Eoc_Mask
rw rw rw rw rw rw rw rw rw rw ro ro ro rw rw rw

Бит 5 Low_Irq - Статус прерывания события «выход сенсора меньше порогового значения Low_Threshold»

Бит 4 Hi_Irq - Статус прерывания событии «выход сенсора больше порогового значения Hi_Threshold»

Бит 3 Eoc_Irq - Статус прерывания по окончанию преобразования

Бит 2 Low_Mask - Маска прерывания при событии «выход сенсора меньше порогового значения Low_Threshold»

Бит 1 Hi_Mask - Маска прерывания при событии «выход сенсора больше порогового значения Hi_Threshold»

Бит 0 Eoc_Mask - Маска прерывания по окончанию преобразования

TSENS_CLEAR_IRQ

Смещение: 0x28 - регистр калибровочных данных. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано Low_ Clear Hi_ Clear Eoc_Clear
rw rw rw rw rw rw rw rw rw rw rw rw rw W1C W1C W1C

Бит 2 Low_Clear - Сброс прерывания события «выход сенсора меньше порогового значения Low_Threshold»

Бит 1 Hi_Clear - Сброс прерывания событии «выход сенсора больше порогового значения Hi_Threshold»

Бит 0 Eoc_Clear - Сброс прерывания по окончанию преобразования

TSENS_VALUE

Смещение: 0x2С - регистр данных. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано Eoc Value
rw rw rw rw rw ro ro ro ro ro ro ro ro ro ro ro

Бит 10 Eoc - Текущее значение выхода окончания преобразования

Биты 9:0 Value - Последнее измереннное значение сенсором

TSENS_SINGLE

Смещение: 0x30 - регистр запуска однократного измерения. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано Single
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Бит 0 Single - Запуск одного измерения

TSENS_ CONTINIUS

Смещение: 0x34 - регистр запуска непрерывного измерения. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано Continius
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Бит 0 Continius - Управление непрерывным измерением:

  • 1 - запуск
  • 0 - остановка
REF_CLB

Смещение: 0x38 - регистр калибровочных данных. Значение после подачи сброса: 0x00000100;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано EN Coef_RefIclb Coef_RefVclb
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw ro

Бит 8 EN - Включение калибровки настройки опорного

Бит 7:4 Coef_RefIclb - Коэффициент настройки тока

Бит 3:0 Coef_RefVclb - Коэффициент настройки напряжения