@GNU AS
@.CHARSET =CP1251 ( Cyrillic )
@.DESC     type=module
@ +------------------------------------------------------------------+
@ |                     Базовые константы SPI                        |
@ |                     микроконтроллера 1921ВК035                   |
@ +------------------------------------------------------------------+
@.ENDDESC

@A.11 Регистры контроллера SPI

@.ITEM     SPI_BASE
.EQU  SPI_CR0       , 0x00       @ CR0 – регистр управления 0
.EQU  SPI_CR1       , 0x04       @ CR1 – регистр управления 1
.EQU  SPI_DR        , 0x08       @ DR – регистр данных
.EQU  SPI_SR        , 0x0C       @ SR – SR – регистр состояния
.EQU  SPI_CPSR      , 0x10       @ CPSR – регистр делителя тактовой частоты
.EQU  SPI_IMSC      , 0x14       @ IMSC – регистр маски прерываний
.EQU  SPI_RIS       , 0x18       @ RIS – регистр состояния прерываний
.EQU  SPI_MIS       , 0x1C       @ MIS – регистр состояния прерываний с маскированиемRIS
.EQU  SPI_ICR       , 0x20       @ ICR – регистр сброса прерываний
.EQU  SPI_DMACR     , 0x24       @ DMACR – регистр управления прямым доступом к памяти
@.END

@.ITEM     SPI_CR0
.EQU  SPI_CR0_SCR_N , 8          @ Коэффициент деления второго делителя.
.EQU  SPI_CR0_SCR_M , 0xFF       @ Может принимать значения 00h до FFh
.EQU  SPI_CR0_SCR   , 9          @ 200 кГц  при 100мГц тактовой частоты
.EQU  SPI_CR0_SPH_N , 7          @ Фаза сигнала SPI_SCK (только для протокола обмена SPI)
                                 @  0 Выборка данных по переднему фронту синхросигнала, а установка по
                                 @  заднему
.EQU  SPI_CR0_SPH   , 1 << 7     @  1 Выборка данных по заднему фронту синхросигнала, а установка по
                                 @  переднему
.EQU  SPI_CR0_SPO_N , 6          @ Полярность сигнала SPI_SCK (только для протокола обмена SPI)
                                 @  0 В режиме ожидания линия SPI_SCK удерживается в состоянии
                                 @  логического     нуля
.EQU  SPI_CR0_SPO   , 1 << 6     @  1 В режиме ожидания линия SPI_SCK удерживается в состоянии
                                 @  логической единицы
.EQU  SPI_CR0_FRF_N , 4          @  Поле выбора протокола обмена информацией
.EQU  SPI_CR0_FRF_SPI, 0x00 << 4    @  SPI
.EQU  SPI_CR0_FRF_SSI, 0x01 << 4    @  SSI
.EQU  SPI_CR0_FRF_SPI, 0x10 << 4    @  Microwire
.EQU  SPI_CR0_DSS_N , 0          @  Размер слова данных
.EQU  SPI_CR0_DSS_8bits, 0x07    @ 8 бит
.EQU  SPI_CR0_DSS_16bits, 0x0F    @ 16 бит
@.END

@.ITEM     SPI_CR1
.EQU  SPI_CR1_TXIFLSEL_N, 12     @ Велична порога опустошения передающего FIFO. При опустошении
.EQU  SPI_CR1_TXIFLSEL, 0x04     @  до уровня порога или ниже может быть сгенерировано прерывание
                  @  или запрос DMA.
                  @  Допустимый      диапазон значений 0h - 8h ( по умолчанию – 4h )
.EQU  SPI_CR1_RXIFLSEL_N, 8      @ Велична порога наполнения принимающего FIFO. При заполнении
.EQU  SPI_CR1_RXIFLSEL, 0x04     @ до              уровня порога или выше может быть сгенерировано прерывание
                                 @ или запрос DMA.
                                 @ Допустимый диапазон значений 0h - 8h ( по умолчанию – 4h )
.EQU  SPI_CR1_SOD_N , 3          @ Бит запрета передачи данных.
                                 @ В режиме мастера значение бита игнорируется.
                                 @ В режиме ведомого бит контролирует выход данных
.EQU  SPI_CR1_MS_N  , 2          @ Бит выбора режима работы
                                 @ 0 Мастер
.EQU  SPI_CR1_MS    , 1 << 2     @ 1 Ведомый
.EQU  SPI_CR1_SSE_N , 1          @ Бит выбора режима работы
.EQU  SPI_CR1_SSE_MASTER, 0 << 1    @ 0 Мастер
.EQU  SPI_CR1_SSE_SLAVE, 1 << 1    @ 1 Ведомый
@.END

@.ITEM     SPI_DR
.EQU  SPI_DR_DATA_N , 0          @ 16-разрядный буфер FIFO приемника и передатчика.
.EQU  SPI_DR_DATA_M , 0xFFFF     @ Данные для передачи записываются в регистр.
                                 @ менее 16 бит , они должны быть выравнены по правой границе.
@.END

@.ITEM     SPI_SR
.EQU  SPI_SR_BSY_N  , 4          @ 0 Приемопередатчик не активен
                                 @  1 Передача / прием данных либо буфер FIFO не пуст
.EQU  SPI_SR_RFF_N  , 3          @ 0 Буфер FIFO приемника не заполнен
                                 @ 1 Буфер FIFO приемника заполнен
.EQU  SPI_SR_RNE_N  , 2          @   0 Буфер FIFO приемника пуст
                                 @ 1  Буфер FIFO приемника не пуст
.EQU  SPI_SR_TNF_N  , 1          @ 0 Буфер FIFO передатчика заполнен
                                 @ 1 Буфер FIFO передатчика не заполнен
.EQU  SPI_SR_TFE_N  , 0          @ 0 Буфер FIFO передатчика не пуст
                                 @ 1 Буфер FIFO передатчика пуст
@.END

@.ITEM     SPI_CPSR
.EQU  SPI_SR_CPSDVSR_N, 0        @ Коэффициент деления первого делителя.
.EQU  SPI_SR_CPSDVSR, 0x09       @  Может принимать четные значения от 02h до FEh
@.END

@.ITEM     SPI_IMSC
.EQU  SPI_IMSC_TXIM_N, 3         @ Буфер передатчика опустошен до величины порога или ниже
.EQU  SPI_IMSC_RXIM_N, 2         @ Буфер приемника заполнен на величину порога или выше
.EQU  SPI_IMSC_RTIM_N, 1         @ Таймаут приема данных
.EQU  SPI_IMSC_RORIM_N, 0        @ Переполнение буфер
@.END

@.ITEM     SPI_RIS               @ регистр состояния прерываний
.EQU  SPI_RIS_TXRIS_N, 3         @ Буфер передатчика опустошен до величины порога или ниже
.EQU  SPI_RIS_RXRIS_N, 2         @ Буфер приемника заполнен на величину порога или выше
.EQU  SPI_RIS_RTRIS_N, 1         @ Таймаут приема данных
.EQU  SPI_RIS_RORRIS_N, 0        @ Переполнение буфер
@.END

@.ITEM     SPI_MIS               @ – регистр состояния прерываний с маскированием
.EQU  SPI_RIS_TXMIS_N, 3         @ Буфер передатчика опустошен до величины порога или ниже
.EQU  SPI_RIS_RXMIS_N, 2         @ Буфер приемника заполнен на величину порога или выше
.EQU  SPI_RIS_RTMIS_N, 1         @ Таймаут приема данных
.EQU  SPI_RIS_RORMIS_N, 0        @ Переполнение буфер
@.END

@.ITEM     SPI_ICR               @ – регистр сброса прерываний
.EQU  SPI_ICR_RTIC_N, 1         @ Таймаут приема данных
.EQU  SPI_ICR_RORIC_N, 0         @ Переполнение буфера приемника
@.END

@.ITEM     SPI_DMACR               @ – регистр управления прямым доступом к памяти
.EQU  SPI_DMACR_TXDMAE_N, 1         @ Бит разрешения использования контроллера DMA при передаче
                                    @ 0 Не используется
                                    @ 1 Разрешено формирование запросов контроллера DMA для
                                    @ обслуживания буфера FIFO передатчика
.EQU  SPI_DMACR_RXDMAE_N, 0         @ Бит разрешения использования контроллера DMA при приеме
                                    @ 1 Разрешено формирование запросов контроллера DMA для
@.END                               @ обслуживания буфера FIFO O приемника




