68 #define MKPD_BCONE0_SUB_ADDR1(x) ((uint32_t)((x & 0x1F) << 0)) 69 #define MKPD_BCONE0_EP_ADDR1(x) ((uint32_t)((x & 0x1F) << 5)) 70 #define MKPD_BCONE0_NUM(x) ((uint32_t)((x & 0x1F) << 10)) 71 #define MKPD_BCONE0_SUB_ADDR0(x) ((uint32_t)((x & 0x1F) << 16)) 72 #define MKPD_BCONE0_EP_ADDR0(x) ((uint32_t)((x & 0x1F) << 21)) 77 #define MKPD_BCONE2_TYPE_TRANS(x) ((uint32_t)((x & 0x0F) << 0)) 78 #define MKPD_BCONE2_MANAGE_CODE(x) ((unsigned int)((x & 0x01) << 4)) 79 #define MKPD_BCONE2_ENA ((uint32_t)(1 << 8)) 80 #define MKPD_BCONE2_COM_DATA(x) ((uint32_t)((x & 0xFFFF) << 16)) 85 #define MKPD_BCONE3_REPLY_WORD(x) ((uint32_t)(x & 0xFFFF)) 86 #define MKPD_BCONE3_REPLY(x) ((uint32_t)((x >> 16) & 0xFFFF)) 91 #define MKPD_BCONE4_STATUS ((uint32_t)(1 << 0)) 92 #define MKPD_BCONE4_ERROR ((uint32_t)(1 << 8)) 93 #define MKPD_BCONE4_TIMEOUT ((uint32_t)(1 << 16)) 98 #define MKPD_BCTWO0_SUB_ADDR1(x) ((uint32_t)((x & 0x1F) << 0)) 99 #define MKPD_BCTWO0_EP_ADDR1(x) ((uint32_t)((x & 0x1F) << 5)) 100 #define MKPD_BCTWO0_NUM(x) ((uint32_t)((x & 0x1F) << 10)) 101 #define MKPD_BCTWO0_SUB_ADDR0(x) ((uint32_t)((x & 0x1F) << 16)) 102 #define MKPD_BCTWO0_EP_ADDR0(x) ((uint32_t)((x & 0x1F) << 21)) 107 #define MKPD_BCTWO2_TYPE_TRANS(x) ((uint32_t)((x & 0x0F) << 0)) 108 #define MKPD_BCTWO2_MANAGE_CODE ((uint32_t)(1 << 4)) 109 #define MKPD_BCTWO2_ENA ((uint32_t)(1 << 8)) 110 #define MKPD_BCTWO2_COM_DATA(x) ((uint32_t)((x & 0xFFFF) << 16)) 115 #define MKPD_BCTWO3_REPLY_WORD(x) ((uint32_t)(x & 0xFFFF)) 116 #define MKPD_BCTWO3_REPLY(x) ((uint32_t)((x >> 16) & 0xFFFF)) 121 #define MKPD_BCTWO4_STATUS ((uint32_t)(1 << 0)) 122 #define MKPD_BCTWO4_ERROR ((uint32_t)(1 << 8)) 123 #define MKPD_BCTWO4_TIMEOUT ((uint32_t)(1 << 16)) 128 #define MKPD_EP1_FEP1 ((uint32_t)(1 << 0)) 129 #define MKPD_EP1_MAN ((uint32_t)(1 << 1)) 130 #define MKPD_EP1_FEP0 ((uint32_t)(1 << 2)) 131 #define MKPD_EP1_BUSY ((uint32_t)(1 << 3)) 132 #define MKPD_EP1_RXGROUP ((uint32_t)(1 << 4)) 133 #define MKPD_EP1_RESERV(x) ((uint32_t)((x & 0x03) << 5)) 134 #define MKPD_EP1_SREQ ((uint32_t)(1 << 8)) 135 #define MKPD_EP1_ERROR ((uint32_t)(1 << 8)) 136 #define MKPD_EP1_RDATA(x) ((uint32_t)((x & 0xFFFF) << 16)) 141 #define MKPD_EP2_EP_COM_ERR ((uint32_t)(1 << 0)) 142 #define MKPD_EP2_EP_COM_TIMEOUT ((uint32_t)(1 << 1)) 147 #define MKPD_EP3_EP_COM_DATA(x) ((uint32_t)(x & 0xFFFF)) 148 #define MKPD_EP3_EP_COM(x) ((uint32_t)((x >> 16) & 0xFFFF)) 153 #define MKPD_SETTING0_EP_ADDR(x) ((uint32_t)((x & 0x1F) << 0)) 169 #define MKPD_SETTING0_SYS_CLK(x) ((uint32_t)((x & 0xFF) << 24)) 174 #define MKPD_SETTING1_EDGE(x) ((uint32_t)((x & 0xFF) << 8)) 175 #define MKPD_SETTING1_RWAIT(x) ((uint32_t)((x & 0xFF) << 16)) 176 #define MKPD_SETTING1_TIME(x) ((uint32_t)((x & 0x0F) << 24)) 183 #define MKPD_SETTING2_500NS(x) ((unsigned int)((x & 0xFF) << 0)) 185 #define MKPD_SETTING2_INVTX(x) ((unsigned int)((x & 0x01) << 8)) 187 #define MKPD_SETTING2_INCWITH(x) ((unsigned int)((x & 0x01) << 9)) 189 #define MKPD_SETTING2_DECDIS(x) ((unsigned int)((x & 0x0F) << 10)) 191 #define MKPD_SETTING2_NOACTTIME(x) ((unsigned int)((x & 0xFF) << 16)) 193 #define MKPD_SETTING2_BCWAITREPLY(x) ((unsigned int)((x & 0xFF) << 24)) 203 #define MKPD_SETTING2_NOACTTIME(x) ((uint32_t)((x & 0xFF) << 16)) 204 #define MKPD_SETTING2_BCWAITREPLY(x) ((uint32_t)((x & 0xFF) << 24)) 213 #define MKPD_SETTING3_1250NS(x) ((uint32_t)((x & 0xFF) << 0)) 214 #define MKPD_SETTING3_1500NS(x) ((uint32_t)((x & 0xFF) << 8)) 215 #define MKPD_SETTING3_1750NS(x) ((uint32_t)((x & 0xFF) << 16)) 216 #define MKPD_SETTING3_2250NS(x) ((uint32_t)((x & 0xFF) << 24)) 221 #define MKPD_INTERRUPT_BC_INT ((uint32_t)(1 << 0)) 222 #define MKPD_INTERRUPT_EP_INT0 ((uint32_t)(1 << 1)) 223 #define MKPD_INTERRUPT_EP_INT1 ((uint32_t)(1 << 2)) 224 #define MKPD_INTERRUPT_MON_INT ((uint32_t)(1 << 3)) 229 #define MKPD_MAX_WORD_IN_PACKET 32 230 #define MKPD_EP_SUBADDR_COUNT 32 //16 231 #define MKPD_MANAGE_MODE_MASK 0xF 232 #define MKPD_EP_GROUP_ADDR 0x1F 269 volatile uint16_t FEP1:1;
270 volatile uint16_t MAN:1;
271 volatile uint16_t FEP0:1;
272 volatile uint16_t BUSY:1;
273 volatile uint16_t Group_rx:1;
274 volatile uint16_t RES:3;
275 volatile uint16_t SREQ:1;
276 volatile uint16_t Reply_tx:1;
277 volatile uint16_t Data_err:1;
539 uint32_t ep_addr0, uint32_t sub_addr0,
540 uint32_t ep_addr1, uint32_t sub_addr1,
698 unsigned int ep_addr0,
unsigned int sub_addr0,
699 unsigned int ep_addr1,
unsigned int sub_addr1,
701 unsigned int timeout,
702 unsigned int manage_code)
714 sub_addr0, ep_addr1, sub_addr1, num);
773 pMKPD->
EP1 = (pMKPD->
EP1 & ~0xFF) | attributes;
static void MKPD_Set_NoActivity_Time(MKPD_T *pMKPD, unsigned int Noacttime)
Настройка времени ожидания отсутствия активности на линии, не менее 1.3 мкс
static unsigned int MKPD_StartMessage(MKPD_T *pMKPD, MKPD_TX_T index, unsigned int type_trans, unsigned int ep_addr0, unsigned int sub_addr0, unsigned int ep_addr1, unsigned int sub_addr1, unsigned int num, unsigned int timeout, unsigned int manage_code)
Передача сообщения от КШ
FlagStatus MKPD_Get_Endpoint_COM_Timeout(MKPD_T *pMKPD)
Возвращает значение флага таймаута
void MKPD_ConfigMonitor(MKPD_T *pMKPD, uint32_t address, uint32_t size, uint32_t threshold)
Настройка монитора
volatile uint16_t Command_word_mark
Этот файл содержит структуры, макросы и функции необходимые для работы с дополнительными типами...
Структура для доступа к командному слову (КС)
void MKPD_Set_Interpacket_Time(MKPD_T *pMKPD, uint32_t time)
Установка временного интервала между передачей пакетов
#define MKPD_BCONE0_NUM(x)
static void MKPD_Set_BC_TX_Params(MKPD_T *pMKPD, MKPD_TX_T index, uint32_t ep_addr0, uint32_t sub_addr0, uint32_t ep_addr1, uint32_t sub_addr1, uint32_t num)
Установка параметров транзакции
static void MKPD_Set_Mode(MKPD_T *pMKPD, uint32_t mode)
Установка режима работы блока.
#define MKPD_SETTING2_NOACTTIME(x)
Структура для доступа к регистрам МКПД.
static void MKPD_Set_Endpoint_Attributes(MKPD_T *pMKPD, uint32_t attributes)
Установка признаков в ОС ОУ
#define MKPD_BCONE0_EP_ADDR1(x)
uint32_t MKPD_Get_Endpoint_Command_Word(MKPD_T *pMKPD)
Возвращает командное слово, принятое ОУ
Содержимое ответного слова (ОС)
#define MKPD_BCONE4_STATUS
Макросы для регистра BCONE4.
#define MKPD_SETTING3_1250NS(x)
Макросы для регистра SETTING3.
#define MKPD_BCTWO0_EP_ADDR1(x)
static void MKPD_Set_Clk_1750NS(MKPD_T *pMKPD, unsigned int Clk)
Тонкая настройка количества тактов системной частоты в 1750 нс
uint32_t MKPD_Get_Interrupt(MKPD_T *pMKPD)
Установка приёмной частоты сигнала
static void MKPD_Set_Endpoint_DMA_Address(MKPD_T *pMKPD, uint32_t dma_ep)
Установка адреса первого байта области памяти ОУ
static void MKPD_Set_Clk_500NS(MKPD_T *pMKPD, unsigned int Clk)
Тонкая настройка количества тактов системной частоты в 500 нс
#define MKPD_BCONE2_TYPE_TRANS(x)
Макросы для регистра BCONE2.
#define MKPD_BCONE0_EP_ADDR0(x)
FlagStatus MKPD_BC_IsSending(MKPD_T *pMKPD, MKPD_TX_T index)
Определяет, передается ли транзакция в настоящий момент
#define MKPD_SETTING2_INCWITH(x)
void MKPD_Set_BC_Transaction_Format(MKPD_T *pMKPD, MKPD_TX_T index, uint32_t type_trans)
Установка формата транзакции
void MKPD_Set_InvTX(MKPD_T *pMKPD, unsigned int invTX)
Установка инвертирования дифференциального сигнала на передаче
void MKPD_Set_Wait_Time(MKPD_T *pMKPD, uint32_t rwait)
Установка времени ожидания ОС или СД в режиме работы КШ и ОУ
void MKPD_Loopback_Enable(MKPD_T *pMKPD)
Включение местного заворота линии
static void MKPD_BC_Start_Transaction(MKPD_T *pMKPD, MKPD_TX_T index)
Установка формата транзакции
static void MKPD_Set_BCWaitReply_Time(MKPD_T *pMKPD, unsigned int Bcwaitreply)
Настройка времени ожидания ОС в режиме КШ
#define MKPD_SETTING3_1750NS(x)
void MKPD_Set_Edge_Time(MKPD_T *pMKPD, uint32_t edge)
Установка времени запрещенного состояния дифференциального сигнала
#define MKPD_BCTWO0_EP_ADDR0(x)
static int MKPD_BC_IsReady(MKPD_T *pMKPD, MKPD_TX_T index)
Определяет готовность контроллера шины к новой транзакции
FlagStatus MKPD_Get_Endpoint_COM_Error(MKPD_T *pMKPD)
Возвращает значение флага ошибки в слове данных (используется в транзакциях №6, 10) ...
void MKPD_Set_Monitor_Memory_Size(MKPD_T *pMKPD, uint32_t memory_size)
Задание размера буфера монитора
#define MKPD_BCTWO0_SUB_ADDR0(x)
FlagStatus MKPD_BC_IsWaiting(MKPD_T *pMKPD, MKPD_TX_T index)
Определяет, находится ли транзакция в очереди на передачу
FlagStatus
Тип для состояний флагов
#define MKPD_SETTING3_2250NS(x)
static void MKPD_Set_DecoderDisable(MKPD_T *pMKPD, unsigned int Disable_mask)
Программное отключение декодеров
static void MKPD_Set_Clk_1250NS(MKPD_T *pMKPD, unsigned int Clk)
Тонкая настройка количества тактов системной частоты в 1250 нс
void MKPD_Set_Monitor_Threshold(MKPD_T *pMKPD, uint32_t threshold)
Задание порогового значения для монитора
static void MKPD_Set_BC_DMA_Address(MKPD_T *pMKPD, MKPD_TX_T index, uint32_t dma_addr)
Установка адреса DMA.
FlagStatus MKPD_BC_IsTimeout(MKPD_T *pMKPD, MKPD_TX_T index)
Возвращает значение флага таймаута транзации
void MKPD_Set_Inverting(MKPD_T *pMKPD, uint32_t invert_params)
Настройка параметров инвертирования дифференциального сигнала
volatile uint16_t Subaddr__Manage_mode
void MKPD_Set_Monitor_DMA_Address(MKPD_T *pMKPD, uint32_t dma_monitor_addr)
Задание начального адреса DMA для монитора
void MKPD_Loopback_Disable(MKPD_T *pMKPD)
Отключение местного заворота линии
void MKPD_Set_Endpoint_RDATA(MKPD_T *pMKPD, uint32_t rdata)
Установка слова данных для передачи от ОУ
#define MKPD_BCTWO0_NUM(x)
FlagStatus MKPD_BC_IsError(MKPD_T *pMKPD, MKPD_TX_T index)
Возвращает значение флага ошибки транзации
#define MKPD_SETTING2_DECDIS(x)
union Command_Word Command_Word_T
Структура для доступа к командному слову (КС)
uint32_t MKPD_BC_Reply_Word(MKPD_T *pMKPD, MKPD_TX_T index)
Возвращает ответное слово, полученное от ОУ
#define MKPD_SETTING0_EP_ADDR(x)
Макросы и типы для регистра SETTING0.
static void MKPD_Set_Clk_2250NS(MKPD_T *pMKPD, unsigned int Clk)
Тонкая настройка количества тактов системной частоты в 2250 нс
static void MKPD_Set_BC_Transaction_Format2(MKPD_T *pMKPD, MKPD_TX_T index, unsigned int type_trans, unsigned int manage_code)
Установка формата транзакции
uint32_t MKPD_Get_Endpoint_COM_Data(MKPD_T *pMKPD)
Возвращает принятое от КШ слово данных
static void MKPD_Set_IncWith(MKPD_T *pMKPD, unsigned int IncWith)
Настройка сигнала разрешения передачи
void MKPD_Set_System_Clock(MKPD_T *pMKPD, uint32_t sys_clk)
Установка значения системной частоты
MKPD_TX_T
Выбор интерфейса передачи для контроллера шины
#define MKPD_BCONE0_SUB_ADDR1(x)
Макросы для регистра BCONE0.
Структура командного слова (КС)
#define MKPD_SETTING3_1500NS(x)
#define MKPD_BCONE0_SUB_ADDR0(x)
#define MKPD_SETTING2_500NS(x)
Макросы и типы для регистра SETTING2.
static void MKPD_Set_EP_Address(MKPD_T *pMKPD, uint32_t ep_addr)
Установка адреса оконечного устройства.
static void MKPD_Set_Channel(MKPD_T *pMKPD, uint32_t channel)
Установка рабочего канала для контроллера шины.
void MKPD_Set_BC_COM_Data(MKPD_T *pMKPD, MKPD_TX_T index, uint32_t com_data)
Установка слова данных для передачи в транзакциях формата 6 или 10.
#define MKPD_BCONE2_MANAGE_CODE(x)
#define MKPD_SETTING2_BCWAITREPLY(x)
volatile uint16_t Tx_rx_mark
#define MKPD_BCTWO0_SUB_ADDR1(x)
Макросы для регистра BCTWO0.
static void MKPD_ConfigBusController(MKPD_T *pMKPD, uint32_t address_one, uint32_t address_two, uint32_t channel)
Настройка контроллера шины
static void MKPD_ConfigEndpoint(MKPD_T *pMKPD, uint32_t address, uint32_t ep_address)
Настройка оконечного устройства
volatile uint16_t EP_addr
uint32_t MKPD_BC_Reply_Data(MKPD_T *pMKPD, MKPD_TX_T index)
Возвращает ответные данные, полученные от ОУ (для транзакций формата 5)
volatile uint16_t Data_size__Command_code
static void MKPD_Set_Clk_1500NS(MKPD_T *pMKPD, unsigned int Clk)
Тонкая настройка количества тактов системной частоты в 1500 нс