Описание библиотеки микросхемы 5023ВС016 процессора "Спутник"
Структуры данных | Макросы | Функции
Файл spacewire.h

Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с аппаратным модулем SpaceWire. Подробнее...

#include "types.h"

См. исходные тексты.

Структуры данных

struct  SPW_T
 Структура для доступа к регистрам Spacewire. Подробнее...
 
struct  SPW_DMA_DSC_T
 Структура для DMA дескриптора SpaceWire. Подробнее...
 
struct  SPW_DMA_DSC_TBL_T
 Структура для таблицы DMA дескрипторов Spacewire. Подробнее...
 

Макросы

#define SPW_DSC_COUNT   32
 
#define SW_CONTROL_RESET_AMBA   ((uint32_t)(1 << 0))
 Макросы для CONTROL. Подробнее...
 
#define SW_CONTROL_RESET_DMA   ((uint32_t)(1 << 1))
 
#define SW_CONTROL_LINK_START   ((uint32_t)(1 << 2))
 
#define SW_CONTROL_AUTOSTART   ((uint32_t)(1 << 3))
 
#define SW_CONTROL_LINK_DISABLE   ((uint32_t)(1 << 4))
 
#define SW_CONTROL_ALLOW_TIMECODE_TX   ((uint32_t)(1 << 5))
 
#define SW_CONTROL_RESTART_RX_DMA   ((uint32_t)(1 << 6))
 
#define SW_CONTROL_RESTART_TX_DMA   ((uint32_t)(1 << 7))
 
#define SW_CONTROL_CANCEL_TX_DMA   ((uint32_t)(1 << 8))
 
#define SW_CONTROL_INT_EN_LINK_UP_DOWN   ((uint32_t)(1 << 9))
 
#define SW_CONTROL_INT_EN_TIME_CODE   ((uint32_t)(1 << 10))
 
#define SW_CONTROL_INT_EN_RX_DSCR_COMPLETE   ((uint32_t)(1 << 11))
 
#define SW_CONTROL_INT_EN_TX_DSCR_COMPLETE   ((uint32_t)(1 << 12))
 
#define SW_CONTROL_INT_EN_RX_PACKET   ((uint32_t)(1 << 13))
 
#define SW_CONTROL_DESCTABLESIZE(x)   (__RO (uint32_t)(x & 0xF << 24))
 
#define SW_STATUS_LINK_STATUS_DISABLED   ((uint32_t)(0x0 << 0))
 Макросы для STATUS. Подробнее...
 
#define SW_STATUS_LINK_STATUS_START   ((uint32_t)(0x1 << 0))
 
#define SW_STATUS_LINK_STATUS_CONNECTED   ((uint32_t)(0x2 << 0))
 
#define SW_STATUS_LINK_STATUS_ENABLED   ((uint32_t)(0x3 << 0))
 
#define SW_STATUS_DISCONNECT_ERR   ((uint32_t)(1 << 2))
 
#define SW_STATUS_PARITY_ERR   ((uint32_t)(1 << 3))
 
#define SW_STATUS_ESCAPE_ERR   ((uint32_t)(1 << 4))
 
#define SW_STATUS_CREDIT_ERR   ((uint32_t)(1 << 5))
 
#define SW_STATUS_RX_DMA_RUNNING   ((uint32_t)(1 << 6))
 
#define SW_STATUS_TX_DMA_RUNNING   ((uint32_t)(1 << 7))
 
#define SW_STATUS_AHB_ERR   ((uint32_t)(1 << 8))
 
#define SW_STATUS_RECEIVED_TIMECODE   ((uint32_t)(1 << 10))
 
#define SW_STATUS_RX_COMPLETE   ((uint32_t)(1 << 11))
 
#define SW_STATUS_TX_COMPLETE   ((uint32_t)(1 << 12))
 
#define SW_STATUS_PACKET_RX   ((uint32_t)(1 << 13))
 
#define SW_STATUS_RXFIFO_EMPTY   ((uint32_t)(1 << 14))
 
#define SW_TXSCALER_DIVISOR(x)   ((uint32_t)((x & 0xFF) << 0))
 Макросы для TXSCALER. Подробнее...
 
#define SW_RXDESCPTR_DSCR_NUM(x)   ((uint32_t)((x & 0x1F) << 3))
 Макросы для RXDESCPTR. Подробнее...
 
#define SW_RXDESCPTR_DSCR_ADDR(x)   ((uint32_t)((x & 0xFFFFFF) << 8))
 
#define SW_TXDESCPTR(x)   ((uint32_t)((x & 0x1F) << 3))
 Макросы для TXDESCPTR. Подробнее...
 
#define SW_TXDESCPTR_DSCR_ADDR(x)   ((uint32_t)((x & 0xFFFFFF) << 8))
 
#define SW_TxScalerLink_DIVISOR(x)   ((uint32_t)((x & 0xFF) << 0))
 Макросы для TxScalerLink. Подробнее...
 
#define SW_ResetTime_RESET_TIME(x)   ((uint32_t)((x & 0x3FF) << 0))
 Макросы для ResetTime. Подробнее...
 
#define SW_DISCONNECTTIME_DISCONNECT_TIME(x)   ((uint32_t)((x & 0xFF) << 0))
 Макросы для DISCONNECTTIME. Подробнее...
 
#define SW_Endianness_RX_ENDIAN(x)   ((uint32_t)(x << 1))
 Макросы для Endianness. Подробнее...
 
#define SW_Endianness_TX_ENDIAN(x)   ((uint32_t)(x << 0))
 
#define SW_DMA_DSC_HEADER_NUM(x)   ((uint32_t)((x & 0xFFFF) << 0))
 Макросы для HEADER дескриптора Подробнее...
 
#define SW_DMA_DSC_HEADER_EN   ((uint32_t)(1 << 16))
 
#define SW_DMA_DSC_HEADER_WR   ((uint32_t)(1 << 17))
 
#define SW_DMA_DSC_HEADER_IE   ((uint32_t)(1 << 18))
 
#define SW_DMA_DSC_HEADER_DONE   ((uint32_t)(1 << 19))
 
#define SW_DMA_DSC_HEADER_EOP   ((uint32_t)(1 << 20))
 
#define SW_DMA_DSC_HEADER_EEP   ((uint32_t)(1 << 21))
 

Функции

void SPW_Init (SPW_T *pSPW)
 Инициализация SpaceWire. Подробнее...
 
void SPW_DeInit (SPW_T *pSPW)
 Денициализация SpaceWire. Подробнее...
 
void SPW_freq (uint8_t freq_num)
 Выбор тактовой частоты блоков Spacewire. Подробнее...
 

Подробное описание

Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с аппаратным модулем SpaceWire.

Copyright(C) НПП Цифровые решения, 2017 Copyright(C) Команда разработчиков НПП Цифровые решения Все права защищены.

Программное обеспечение, описанное в этом файле, предназначено только для демонстрационных целей, и предоставляет программистам информацию о продукции организации "Цифровые решения". Это программное обеспечение поставляется "КАК ЕСТЬ" без каких-либо гарантий, "Цифровые решения" отказываются от любых гарантий, фактических или подразумеваемых, включая все подразумеваемые гарантии товарной пригодности, пригодности для конкретной цели и сохранения прав интеллектуальной собственности. Органицация "Цифровые решения" не несет никакой ответственности за использование программного обеспечения, не предоставляет лицензий или прав на патент, авторское право, или любые другие права интеллектуальной собственности, на какие-либо продукты. Организация "Цифровые решения" оставляет за собой право вносить изменения в программное обеспечение без уведомления. Организация "Цифровые решения" также не дает никаких заверений или гарантий, что это программное приложение подойдет для использования без дальнейшего тестирования или модификаций.

Разрешение на использование, копирование, изменение и распространение этого программного обеспечения и документации предоставляется согласно условиям "Цифровых решений" и соответствующих авторских прав своей лицензии без оплаты, при условии, что это программное обеспечнение используется совместно с микроконтроллерами организации "Цифровые решения". Эти права должны распространяться во всех копиях этого кода.

См. определение в файле spacewire.h

Макросы

§ SPW_DSC_COUNT

#define SPW_DSC_COUNT   32

См. определение в файле spacewire.h строка 36

§ SW_CONTROL_ALLOW_TIMECODE_TX

#define SW_CONTROL_ALLOW_TIMECODE_TX   ((uint32_t)(1 << 5))

разрешение передачи временных меток

См. определение в файле spacewire.h строка 62

§ SW_CONTROL_AUTOSTART

#define SW_CONTROL_AUTOSTART   ((uint32_t)(1 << 3))

Autostart; Запись «1» разрешает автоматическую установку соединения в случае потери.

См. определение в файле spacewire.h строка 60

§ SW_CONTROL_CANCEL_TX_DMA

#define SW_CONTROL_CANCEL_TX_DMA   ((uint32_t)(1 << 8))

Запись «1» прерывает работу TXDMA и RXDMA

См. определение в файле spacewire.h строка 65

§ SW_CONTROL_DESCTABLESIZE

#define SW_CONTROL_DESCTABLESIZE (   x)    (__RO (uint32_t)(x & 0xF << 24))

Размер таблицы дескрипторов, доступен только на чтение

См. определение в файле spacewire.h строка 71

§ SW_CONTROL_INT_EN_LINK_UP_DOWN

#define SW_CONTROL_INT_EN_LINK_UP_DOWN   ((uint32_t)(1 << 9))

Разрешение прерывания при установке соединения

См. определение в файле spacewire.h строка 66

§ SW_CONTROL_INT_EN_RX_DSCR_COMPLETE

#define SW_CONTROL_INT_EN_RX_DSCR_COMPLETE   ((uint32_t)(1 << 11))

Разрешение прерывания по завершению RX дескриптора при IE = «1»

См. определение в файле spacewire.h строка 68

§ SW_CONTROL_INT_EN_RX_PACKET

#define SW_CONTROL_INT_EN_RX_PACKET   ((uint32_t)(1 << 13))

Разрешение прерывания при приеме пакета по завершению работы TX дескриптора

См. определение в файле spacewire.h строка 70

§ SW_CONTROL_INT_EN_TIME_CODE

#define SW_CONTROL_INT_EN_TIME_CODE   ((uint32_t)(1 << 10))

Разрешение прерывания при приеме временных меток

См. определение в файле spacewire.h строка 67

§ SW_CONTROL_INT_EN_TX_DSCR_COMPLETE

#define SW_CONTROL_INT_EN_TX_DSCR_COMPLETE   ((uint32_t)(1 << 12))

Разрешение прерывания по завершению TX дескриптора при IE = «1»

См. определение в файле spacewire.h строка 69

§ SW_CONTROL_LINK_DISABLE

#define SW_CONTROL_LINK_DISABLE   ((uint32_t)(1 << 4))

Linkdisable; запись «1» запрещает работу Link контроллера.

См. определение в файле spacewire.h строка 61

§ SW_CONTROL_LINK_START

#define SW_CONTROL_LINK_START   ((uint32_t)(1 << 2))

Linkstart; запись «1» разрешает установку соединения.

См. определение в файле spacewire.h строка 59

§ SW_CONTROL_RESET_AMBA

#define SW_CONTROL_RESET_AMBA   ((uint32_t)(1 << 0))

Макросы для CONTROL.

Запись «1» сбрасывает контроллер

См. определение в файле spacewire.h строка 57

§ SW_CONTROL_RESET_DMA

#define SW_CONTROL_RESET_DMA   ((uint32_t)(1 << 1))

Запись «1» сбрасывает контроллер DMA

См. определение в файле spacewire.h строка 58

§ SW_CONTROL_RESTART_RX_DMA

#define SW_CONTROL_RESTART_RX_DMA   ((uint32_t)(1 << 6))

запуск RXDMA

См. определение в файле spacewire.h строка 63

§ SW_CONTROL_RESTART_TX_DMA

#define SW_CONTROL_RESTART_TX_DMA   ((uint32_t)(1 << 7))

запуск TXDMA

См. определение в файле spacewire.h строка 64

§ SW_DISCONNECTTIME_DISCONNECT_TIME

#define SW_DISCONNECTTIME_DISCONNECT_TIME (   x)    ((uint32_t)((x & 0xFF) << 0))

Макросы для DISCONNECTTIME.

DisconnectTime

См. определение в файле spacewire.h строка 124

§ SW_DMA_DSC_HEADER_DONE

#define SW_DMA_DSC_HEADER_DONE   ((uint32_t)(1 << 19))

статус завершения

См. определение в файле spacewire.h строка 159

§ SW_DMA_DSC_HEADER_EEP

#define SW_DMA_DSC_HEADER_EEP   ((uint32_t)(1 << 21))

признак EEP

См. определение в файле spacewire.h строка 161

§ SW_DMA_DSC_HEADER_EN

#define SW_DMA_DSC_HEADER_EN   ((uint32_t)(1 << 16))

разрешение пользоваться дескриптором

См. определение в файле spacewire.h строка 156

§ SW_DMA_DSC_HEADER_EOP

#define SW_DMA_DSC_HEADER_EOP   ((uint32_t)(1 << 20))

признак EOP

См. определение в файле spacewire.h строка 160

§ SW_DMA_DSC_HEADER_IE

#define SW_DMA_DSC_HEADER_IE   ((uint32_t)(1 << 18))

разрешение прерывания и выставление статуса по завершении

См. определение в файле spacewire.h строка 158

§ SW_DMA_DSC_HEADER_NUM

#define SW_DMA_DSC_HEADER_NUM (   x)    ((uint32_t)((x & 0xFFFF) << 0))

Макросы для HEADER дескриптора

количество байт

См. определение в файле spacewire.h строка 155

§ SW_DMA_DSC_HEADER_WR

#define SW_DMA_DSC_HEADER_WR   ((uint32_t)(1 << 17))

прерывание списка дескрипторов

См. определение в файле spacewire.h строка 157

§ SW_Endianness_RX_ENDIAN

#define SW_Endianness_RX_ENDIAN (   x)    ((uint32_t)(x << 1))

Макросы для Endianness.

RxEndianness. Значение 0 - little endian, 1 - big endian

См. определение в файле spacewire.h строка 129

§ SW_Endianness_TX_ENDIAN

#define SW_Endianness_TX_ENDIAN (   x)    ((uint32_t)(x << 0))

TxEndianness. Значение 0 - little endian, 1 - big endian

См. определение в файле spacewire.h строка 130

§ SW_ResetTime_RESET_TIME

#define SW_ResetTime_RESET_TIME (   x)    ((uint32_t)((x & 0x3FF) << 0))

Макросы для ResetTime.

ResetTime

См. определение в файле spacewire.h строка 119

§ SW_RXDESCPTR_DSCR_ADDR

#define SW_RXDESCPTR_DSCR_ADDR (   x)    ((uint32_t)((x & 0xFFFFFF) << 8))

Адрес начала таблицы дескрипторов

См. определение в файле spacewire.h строка 103

§ SW_RXDESCPTR_DSCR_NUM

#define SW_RXDESCPTR_DSCR_NUM (   x)    ((uint32_t)((x & 0x1F) << 3))

Макросы для RXDESCPTR.

Номер дескриптора

См. определение в файле spacewire.h строка 102

§ SW_STATUS_AHB_ERR

#define SW_STATUS_AHB_ERR   ((uint32_t)(1 << 8))

ошибка шины AHB

См. определение в файле spacewire.h строка 86

§ SW_STATUS_CREDIT_ERR

#define SW_STATUS_CREDIT_ERR   ((uint32_t)(1 << 5))

ошибка credit

См. определение в файле spacewire.h строка 83

§ SW_STATUS_DISCONNECT_ERR

#define SW_STATUS_DISCONNECT_ERR   ((uint32_t)(1 << 2))

ошибка соединения

См. определение в файле spacewire.h строка 80

§ SW_STATUS_ESCAPE_ERR

#define SW_STATUS_ESCAPE_ERR   ((uint32_t)(1 << 4))

ошибка escape

См. определение в файле spacewire.h строка 82

§ SW_STATUS_LINK_STATUS_CONNECTED

#define SW_STATUS_LINK_STATUS_CONNECTED   ((uint32_t)(0x2 << 0))

статус Link контроллера: соединение установлено

См. определение в файле spacewire.h строка 78

§ SW_STATUS_LINK_STATUS_DISABLED

#define SW_STATUS_LINK_STATUS_DISABLED   ((uint32_t)(0x0 << 0))

Макросы для STATUS.

статус Link контроллера: выключен

См. определение в файле spacewire.h строка 76

§ SW_STATUS_LINK_STATUS_ENABLED

#define SW_STATUS_LINK_STATUS_ENABLED   ((uint32_t)(0x3 << 0))

статус Link контроллера: запущен

См. определение в файле spacewire.h строка 79

§ SW_STATUS_LINK_STATUS_START

#define SW_STATUS_LINK_STATUS_START   ((uint32_t)(0x1 << 0))

статус Link контроллера: старт

См. определение в файле spacewire.h строка 77

§ SW_STATUS_PACKET_RX

#define SW_STATUS_PACKET_RX   ((uint32_t)(1 << 13))

Получен пакет. Для сброса бита необходимо записать «1»

См. определение в файле spacewire.h строка 90

§ SW_STATUS_PARITY_ERR

#define SW_STATUS_PARITY_ERR   ((uint32_t)(1 << 3))

ошибка четности

См. определение в файле spacewire.h строка 81

§ SW_STATUS_RECEIVED_TIMECODE

#define SW_STATUS_RECEIVED_TIMECODE   ((uint32_t)(1 << 10))

Получен пакет с временной меткой. Для сброса бита необходимо записать «1»

См. определение в файле spacewire.h строка 87

§ SW_STATUS_RX_COMPLETE

#define SW_STATUS_RX_COMPLETE   ((uint32_t)(1 << 11))

RX дескриптор завершен при IE = «1». Для сброса бита необходимо записать «1»

См. определение в файле spacewire.h строка 88

§ SW_STATUS_RX_DMA_RUNNING

#define SW_STATUS_RX_DMA_RUNNING   ((uint32_t)(1 << 6))

RXDMA запущен

См. определение в файле spacewire.h строка 84

§ SW_STATUS_RXFIFO_EMPTY

#define SW_STATUS_RXFIFO_EMPTY   ((uint32_t)(1 << 14))

(только чтение) - память RXFIFO не содержит данных, и последний пакет был отправлен по RXDMA

См. определение в файле spacewire.h строка 91

§ SW_STATUS_TX_COMPLETE

#define SW_STATUS_TX_COMPLETE   ((uint32_t)(1 << 12))

TX дескриптор завершен при IE = «1». Для сброса бита необходимо записать «1»

См. определение в файле spacewire.h строка 89

§ SW_STATUS_TX_DMA_RUNNING

#define SW_STATUS_TX_DMA_RUNNING   ((uint32_t)(1 << 7))

TXDMA запущен

См. определение в файле spacewire.h строка 85

§ SW_TXDESCPTR

#define SW_TXDESCPTR (   x)    ((uint32_t)((x & 0x1F) << 3))

Макросы для TXDESCPTR.

Номер дескриптора

См. определение в файле spacewire.h строка 108

§ SW_TXDESCPTR_DSCR_ADDR

#define SW_TXDESCPTR_DSCR_ADDR (   x)    ((uint32_t)((x & 0xFFFFFF) << 8))

Адрес начала таблицы дескрипторов

См. определение в файле spacewire.h строка 109

§ SW_TXSCALER_DIVISOR

#define SW_TXSCALER_DIVISOR (   x)    ((uint32_t)((x & 0xFF) << 0))

Макросы для TXSCALER.

делитель частоты тактового сигнала передатчика

См. определение в файле spacewire.h строка 97

§ SW_TxScalerLink_DIVISOR

#define SW_TxScalerLink_DIVISOR (   x)    ((uint32_t)((x & 0xFF) << 0))

Макросы для TxScalerLink.

TxScalerLink

См. определение в файле spacewire.h строка 114

Функции

§ SPW_DeInit()

void SPW_DeInit ( SPW_T pSPW)

Денициализация SpaceWire.

Аргументы
pSPW: Указатель на структуру с регистрами SpaceWire

См. определение в файле spacewire.c строка 79

§ SPW_freq()

void SPW_freq ( uint8_t  freq_num)

Выбор тактовой частоты блоков Spacewire.

Аргументы
pSPW: Указатель на структуру с регистрами SpaceWire
freq_num: номер частоты 0 – тактирование осуществляется с внешнего вывода SW_CLK (PORTH[4]). 1 – тактирование осуществляется системной частотой

См. определение в файле spacewire.c строка 72

§ SPW_Init()

void SPW_Init ( SPW_T pSPW)

Инициализация SpaceWire.

Аргументы
pSPW: Указатель на структуру с регистрами SpaceWire

<Подача тактового сигнала на модуль

<Вывод модуля из асинхронного сброса

См. определение в файле spacewire.c строка 59