Описание библиотеки микросхемы 5023ВС016 процессора "Спутник"
mkpd.h
См. документацию.
1 
29 #ifndef MKPD_H_
30 #define MKPD_H_
31 
32 #include "types.h"
33 
34 
38 typedef struct
39 {
40  __RW uint32_t BCONE0;
41  __RW uint32_t BCONE1;
42  __RW uint32_t BCONE2;
43  __RO uint32_t BCONE3;
44  __RO uint32_t BCONE4;
45  __RW uint32_t BCTWO0;
46  __RW uint32_t BCTWO1;
47  __RW uint32_t BCTWO2;
48  __RO uint32_t BCTWO3;
49  __RO uint32_t BCTWO4;
50  __RW uint32_t EP0;
51  __RW uint32_t EP1;
52  __RO uint32_t EP2;
53  __RO uint32_t EP3;
54  __RW uint32_t SETTING0;
55  __RW uint32_t SETTING1;
56  __RW uint32_t SETTING2;
57  __RW uint32_t SETTING3;
58  __RW uint32_t MONITOR0;
59  __RW uint32_t MONITOR1;
60  __RW uint32_t MONITOR2;
61  __RO uint32_t MONITOR3;
62  __RW uint32_t INTERRUPT;
63 }MKPD_T;
64 
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))
155 typedef enum
156 {
157  MKPD_SETTING0_MODE_DISABLED = ((uint32_t)(0 << 8)),
158  MKPD_SETTING0_MODE_BC = ((uint32_t)(1 << 8)),
159  MKPD_SETTING0_MODE_EP = ((uint32_t)(2 << 8)),
160  MKPD_SETTING0_MODE_M = ((uint32_t)(3 << 8)),
162 
163 typedef enum
164 {
165  MKPD_SETTING0_CHANNEL_A = ((uint32_t)(0 << 16)),
166  MKPD_SETTING0_CHANNEL_B = ((uint32_t)(1 << 16)),
168 
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))
195 typedef enum
196 {
197  MKPD_SETTING2_DECDIS_A = ((uint32_t)(1 << 10)),
198  MKPD_SETTING2_DECDIS_B = ((uint32_t)(1 << 11)),
199  MKPD_SETTING2_DECDIS_C = ((uint32_t)(1 << 12)),
200  MKPD_SETTING2_DECDIS_D = ((uint32_t)(1 << 13)),
202 
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
237 typedef enum
238 {
241 }MKPD_TX_T;
242 
247 {
248  volatile uint16_t Data_size__Command_code:5;
249  volatile uint16_t Subaddr__Manage_mode:4;
250  volatile uint16_t Command_word_mark:1;
251  volatile uint16_t Tx_rx_mark:1;
252  volatile uint16_t EP_addr:5;
253 };
254 
258 typedef union Command_Word
259 {
260  volatile uint16_t all;
261  struct Command_Word_Bits bit;
263 
267 struct Reply_Word_Bits
268 {
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;
278  volatile uint16_t EP_addr:5;
279 };
280 
287 void MKPD_Set_System_Clock(MKPD_T *pMKPD, uint32_t sys_clk);
288 
299 static inline void MKPD_Set_Channel(MKPD_T *pMKPD, uint32_t channel)
300 {
301  pMKPD->SETTING0 = (pMKPD->SETTING0 & ~(0x1 << 16)) | channel;
302 }
303 
304 
316 static inline void MKPD_Set_Mode(MKPD_T *pMKPD, uint32_t mode)
317 {
318  pMKPD->SETTING0 = (pMKPD->SETTING0 & ~(0x3 << 8)) | mode;
319 }
320 
321 
329 static inline void MKPD_Set_BC_Transaction_Format2(MKPD_T *pMKPD, MKPD_TX_T index, unsigned int type_trans, unsigned int manage_code)
330 {
331  if (index == TX_ONE)
332  pMKPD->BCONE2 = (pMKPD->BCONE2 & ~(0x1F << 0)) | MKPD_BCONE2_TYPE_TRANS((type_trans-1)%10) | MKPD_BCONE2_MANAGE_CODE(manage_code);
333  else
334  pMKPD->BCTWO2 = (pMKPD->BCTWO2 & ~(0x1F << 0)) | MKPD_BCONE2_TYPE_TRANS((type_trans-1)%10) | MKPD_BCONE2_MANAGE_CODE(manage_code);
335 }
336 
344 static inline void MKPD_Set_EP_Address(MKPD_T *pMKPD, uint32_t ep_addr)
345 {
346  pMKPD->SETTING0 = (pMKPD->SETTING0 & ~(0x1F << 0)) | MKPD_SETTING0_EP_ADDR(ep_addr);
347 }
348 
355 void MKPD_Set_Interpacket_Time(MKPD_T *pMKPD, uint32_t time);
356 
363 void MKPD_Set_Wait_Time(MKPD_T *pMKPD, uint32_t rwait);
364 
371 void MKPD_Set_Edge_Time(MKPD_T *pMKPD, uint32_t edge);
372 
373 
379 static inline void MKPD_Set_IncWith(MKPD_T *pMKPD, unsigned int IncWith)
380 {
381  pMKPD->SETTING2 = (pMKPD->SETTING2 & ~(0x1 << 9)) | MKPD_SETTING2_INCWITH(IncWith);
382 }
383 
390 static inline void MKPD_Set_DecoderDisable(MKPD_T *pMKPD, unsigned int Disable_mask)
391 {
392  pMKPD->SETTING2 = (pMKPD->SETTING2 & ~(0xF << 10)) | MKPD_SETTING2_DECDIS(Disable_mask);
393 }
394 
400 static inline void MKPD_Set_NoActivity_Time(MKPD_T *pMKPD, unsigned int Noacttime)
401 {
402  pMKPD->SETTING2 = (pMKPD->SETTING2 & ~(0xFF << 16)) | MKPD_SETTING2_NOACTTIME(Noacttime);
403 }
404 
410 static inline void MKPD_Set_BCWaitReply_Time(MKPD_T *pMKPD, unsigned int Bcwaitreply)
411 {
412  pMKPD->SETTING2 = (pMKPD->SETTING2 & ~(0xFF << 24)) | MKPD_SETTING2_BCWAITREPLY(Bcwaitreply);
413 }
414 
420 static inline void MKPD_Set_Clk_500NS(MKPD_T *pMKPD, unsigned int Clk)
421 {
422  pMKPD->SETTING2 = (pMKPD->SETTING2 & ~(0xFF << 0)) | MKPD_SETTING2_500NS(Clk);
423 }
424 
430 static inline void MKPD_Set_Clk_1250NS(MKPD_T *pMKPD, unsigned int Clk)
431 {
432  pMKPD->SETTING3 = (pMKPD->SETTING3 & ~(0xFF << 0)) | MKPD_SETTING3_1250NS(Clk);
433 }
434 
440 static inline void MKPD_Set_Clk_1500NS(MKPD_T *pMKPD, unsigned int Clk)
441 {
442  pMKPD->SETTING3 = (pMKPD->SETTING3 & ~(0xFF << 8)) | MKPD_SETTING3_1500NS(Clk);
443 }
444 
450 static inline void MKPD_Set_Clk_1750NS(MKPD_T *pMKPD, unsigned int Clk)
451 {
452  pMKPD->SETTING3 = (pMKPD->SETTING3 & ~(0xFF << 16)) | MKPD_SETTING3_1750NS(Clk);
453 }
454 
460 static inline void MKPD_Set_Clk_2250NS(MKPD_T *pMKPD, unsigned int Clk)
461 {
462  pMKPD->SETTING3 = (pMKPD->SETTING3 & ~(0xFF << 24)) | MKPD_SETTING3_2250NS(Clk);
463 }
464 
471 static inline int MKPD_BC_IsReady(MKPD_T *pMKPD, MKPD_TX_T index)
472 {
473  if (index == TX_ONE)
474  return ((pMKPD->BCONE2 & MKPD_BCONE2_ENA) || (pMKPD->BCONE4 & MKPD_BCONE4_STATUS)) ? 0 : 1;
475  else
476  return ((pMKPD->BCTWO2 & MKPD_BCONE2_ENA) || (pMKPD->BCTWO4 & MKPD_BCONE4_STATUS)) ? 0 : 1;
477 }
478 
486 //void MKPD_Set_Clock_RX(MKPD_T *pMKPD, uint32_t clkrx);
487 
498 uint32_t MKPD_Get_Interrupt(MKPD_T *pMKPD);
499 
511 void MKPD_Set_Inverting(MKPD_T *pMKPD, uint32_t invert_params);
512 
518 void MKPD_Loopback_Enable(MKPD_T *pMKPD);
519 
525 void MKPD_Loopback_Disable(MKPD_T *pMKPD);
526 
538 static inline void MKPD_Set_BC_TX_Params(MKPD_T *pMKPD, MKPD_TX_T index,
539  uint32_t ep_addr0, uint32_t sub_addr0,
540  uint32_t ep_addr1, uint32_t sub_addr1,
541  uint32_t num)
542 {
543  if (index == TX_ONE)
544  {
545  pMKPD->BCONE0 = MKPD_BCONE0_EP_ADDR0(ep_addr0) |
546  MKPD_BCONE0_SUB_ADDR0(sub_addr0) |
547  MKPD_BCONE0_EP_ADDR1(ep_addr1) |
548  MKPD_BCONE0_SUB_ADDR1(sub_addr1) |
549  MKPD_BCONE0_NUM(num);
550  }
551  else
552  {
553  pMKPD->BCTWO0 = MKPD_BCTWO0_EP_ADDR0(ep_addr0) |
554  MKPD_BCTWO0_SUB_ADDR0(sub_addr0) |
555  MKPD_BCTWO0_EP_ADDR1(ep_addr1) |
556  MKPD_BCTWO0_SUB_ADDR1(sub_addr1) |
557  MKPD_BCTWO0_NUM(num);
558  }
559 }
560 
568 static inline void MKPD_Set_BC_DMA_Address(MKPD_T *pMKPD, MKPD_TX_T index, uint32_t dma_addr)
569 {
570  if (index == TX_ONE)
571  {
572  pMKPD->BCONE1 = dma_addr;
573  }
574  else
575  {
576  pMKPD->BCTWO1 = dma_addr;
577  }
578 }
579 
591 static inline void MKPD_ConfigBusController(MKPD_T *pMKPD, uint32_t address_one, uint32_t address_two, uint32_t channel)
592 {
593  MKPD_Set_Channel(pMKPD, channel);
594  MKPD_Set_BC_DMA_Address(pMKPD, TX_ONE, address_one);
595  MKPD_Set_BC_DMA_Address(pMKPD, TX_TWO, address_two);
597 
598 }
599 
607 void MKPD_Set_BC_COM_Data(MKPD_T *pMKPD, MKPD_TX_T index, uint32_t com_data);
608 
616 void MKPD_Set_BC_Transaction_Format(MKPD_T *pMKPD, MKPD_TX_T index, uint32_t type_trans);
617 
624 static inline void MKPD_BC_Start_Transaction(MKPD_T *pMKPD, MKPD_TX_T index)
625 {
626  if (index == TX_ONE)
627  {
628  pMKPD->BCONE2 |=MKPD_BCONE2_ENA;
629  }
630  else
631  {
632  pMKPD->BCTWO2 |= MKPD_BCTWO2_ENA;
633  }
634 }
635 
642 FlagStatus MKPD_BC_IsWaiting(MKPD_T *pMKPD, MKPD_TX_T index);
649 FlagStatus MKPD_BC_IsSending(MKPD_T *pMKPD, MKPD_TX_T index);
650 
657 FlagStatus MKPD_BC_IsError(MKPD_T *pMKPD, MKPD_TX_T index);
658 
665 FlagStatus MKPD_BC_IsTimeout(MKPD_T *pMKPD, MKPD_TX_T index);
666 
673 uint32_t MKPD_BC_Reply_Word(MKPD_T *pMKPD, MKPD_TX_T index);
674 
681 uint32_t MKPD_BC_Reply_Data(MKPD_T *pMKPD, MKPD_TX_T index);
682 
697 static inline unsigned int MKPD_StartMessage(MKPD_T *pMKPD, MKPD_TX_T index, unsigned int type_trans,
698  unsigned int ep_addr0, unsigned int sub_addr0,
699  unsigned int ep_addr1, unsigned int sub_addr1,
700  unsigned int num,
701  unsigned int timeout,
702  unsigned int manage_code)
703 {
704  if (timeout == 0)
705  return 1;
706 
707  while(!MKPD_BC_IsReady(pMKPD, index) && (--timeout)); //ожидание готовности к передаче
708  if (!timeout)
709  return 1; //Ошибка: транзакция не была начата (истек таймаут)
710 
711 
712 
713  MKPD_Set_BC_TX_Params(pMKPD, index, ep_addr0,
714  sub_addr0, ep_addr1, sub_addr1, num); //установка параметров
715  MKPD_Set_BC_Transaction_Format2(pMKPD, index, type_trans, manage_code); //задание формата транзакции
716  MKPD_BC_Start_Transaction(pMKPD, index);
717 
718  while(!MKPD_BC_IsReady(pMKPD, index) && (--timeout));
719 
720  if (!timeout)
721  return 2; //Ошибка: транзакция не завершилась (истек таймаут)
722  return 0;
723 }
724 
725 
732 static inline void MKPD_Set_Endpoint_DMA_Address(MKPD_T *pMKPD, uint32_t dma_ep)
733 {
734  pMKPD->EP0 = dma_ep;
735 }
743 static inline void MKPD_ConfigEndpoint(MKPD_T *pMKPD, uint32_t address, uint32_t ep_address)
744 {
745  MKPD_Set_Endpoint_DMA_Address(pMKPD, address);
746  MKPD_Set_EP_Address(pMKPD, ep_address);
748 }
749 
756 void MKPD_Set_Endpoint_RDATA(MKPD_T *pMKPD, uint32_t rdata);
757 
771 static inline void MKPD_Set_Endpoint_Attributes(MKPD_T *pMKPD, uint32_t attributes)
772 {
773  pMKPD->EP1 = (pMKPD->EP1 & ~0xFF) | attributes;
774 }
775 
781 void MKPD_Set_InvTX(MKPD_T *pMKPD, unsigned int invTX);
782 
788 uint32_t MKPD_Get_Endpoint_COM_Data(MKPD_T *pMKPD);
789 
796 
803 
809 uint32_t MKPD_Get_Endpoint_Command_Word(MKPD_T *pMKPD);
810 
817 void MKPD_Set_Monitor_DMA_Address(MKPD_T *pMKPD, uint32_t dma_monitor_addr);
818 
825 void MKPD_Set_Monitor_Memory_Size(MKPD_T *pMKPD, uint32_t memory_size);
826 
833 void MKPD_Set_Monitor_Threshold(MKPD_T *pMKPD, uint32_t threshold);
834 
843 void MKPD_ConfigMonitor(MKPD_T *pMKPD, uint32_t address, uint32_t size, uint32_t threshold);
844 
845 
846 #endif /* MKPD_H_ */
static void MKPD_Set_NoActivity_Time(MKPD_T *pMKPD, unsigned int Noacttime)
Настройка времени ожидания отсутствия активности на линии, не менее 1.3 мкс
Definition: mkpd.h:400
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)
Передача сообщения от КШ
Definition: mkpd.h:697
__RW uint32_t BCONE1
Definition: mkpd.h:41
__RO uint32_t EP3
Definition: mkpd.h:53
__RW uint32_t INTERRUPT
Definition: mkpd.h:62
FlagStatus MKPD_Get_Endpoint_COM_Timeout(MKPD_T *pMKPD)
Возвращает значение флага таймаута
Definition: mkpd.c:294
void MKPD_ConfigMonitor(MKPD_T *pMKPD, uint32_t address, uint32_t size, uint32_t threshold)
Настройка монитора
Definition: mkpd.c:360
volatile uint16_t Command_word_mark
Definition: mkpd.h:250
__RW uint32_t BCTWO1
Definition: mkpd.h:46
Этот файл содержит структуры, макросы и функции необходимые для работы с дополнительными типами...
Структура для доступа к командному слову (КС)
Definition: mkpd.h:258
Definition: mkpd.h:240
void MKPD_Set_Interpacket_Time(MKPD_T *pMKPD, uint32_t time)
Установка временного интервала между передачей пакетов
Definition: mkpd.c:60
#define MKPD_BCONE0_NUM(x)
Definition: mkpd.h:70
#define __RW
Definition: types.h:39
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)
Установка параметров транзакции
Definition: mkpd.h:538
static void MKPD_Set_Mode(MKPD_T *pMKPD, uint32_t mode)
Установка режима работы блока.
Definition: mkpd.h:316
#define MKPD_SETTING2_NOACTTIME(x)
Definition: mkpd.h:203
Структура для доступа к регистрам МКПД.
Definition: mkpd.h:38
static void MKPD_Set_Endpoint_Attributes(MKPD_T *pMKPD, uint32_t attributes)
Установка признаков в ОС ОУ
Definition: mkpd.h:771
#define MKPD_BCONE0_EP_ADDR1(x)
Definition: mkpd.h:69
uint32_t MKPD_Get_Endpoint_Command_Word(MKPD_T *pMKPD)
Возвращает командное слово, принятое ОУ
Definition: mkpd.c:314
Содержимое ответного слова (ОС)
#define MKPD_BCONE4_STATUS
Макросы для регистра BCONE4.
Definition: mkpd.h:91
MKPD_SETTING0_MODE_T
Definition: mkpd.h:155
#define MKPD_SETTING3_1250NS(x)
Макросы для регистра SETTING3.
Definition: mkpd.h:213
#define MKPD_BCTWO0_EP_ADDR1(x)
Definition: mkpd.h:99
static void MKPD_Set_Clk_1750NS(MKPD_T *pMKPD, unsigned int Clk)
Тонкая настройка количества тактов системной частоты в 1750 нс
Definition: mkpd.h:450
#define __RO
Definition: types.h:37
uint32_t MKPD_Get_Interrupt(MKPD_T *pMKPD)
Установка приёмной частоты сигнала
Definition: mkpd.c:106
static void MKPD_Set_Endpoint_DMA_Address(MKPD_T *pMKPD, uint32_t dma_ep)
Установка адреса первого байта области памяти ОУ
Definition: mkpd.h:732
static void MKPD_Set_Clk_500NS(MKPD_T *pMKPD, unsigned int Clk)
Тонкая настройка количества тактов системной частоты в 500 нс
Definition: mkpd.h:420
#define MKPD_BCONE2_TYPE_TRANS(x)
Макросы для регистра BCONE2.
Definition: mkpd.h:77
__RO uint32_t BCTWO3
Definition: mkpd.h:48
volatile uint16_t all
Definition: mkpd.h:260
#define MKPD_BCONE0_EP_ADDR0(x)
Definition: mkpd.h:72
FlagStatus MKPD_BC_IsSending(MKPD_T *pMKPD, MKPD_TX_T index)
Определяет, передается ли транзакция в настоящий момент
Definition: mkpd.c:178
#define MKPD_SETTING2_INCWITH(x)
Definition: mkpd.h:187
void MKPD_Set_BC_Transaction_Format(MKPD_T *pMKPD, MKPD_TX_T index, uint32_t type_trans)
Установка формата транзакции
Definition: mkpd.c:138
void MKPD_Set_InvTX(MKPD_T *pMKPD, unsigned int invTX)
Установка инвертирования дифференциального сигнала на передаче
Definition: mkpd.c:39
__RW uint32_t BCTWO0
Definition: mkpd.h:45
void MKPD_Set_Wait_Time(MKPD_T *pMKPD, uint32_t rwait)
Установка времени ожидания ОС или СД в режиме работы КШ и ОУ
Definition: mkpd.c:75
__RO uint32_t BCONE3
Definition: mkpd.h:43
void MKPD_Loopback_Enable(MKPD_T *pMKPD)
Включение местного заворота линии
static void MKPD_BC_Start_Transaction(MKPD_T *pMKPD, MKPD_TX_T index)
Установка формата транзакции
Definition: mkpd.h:624
Definition: mkpd.h:239
static void MKPD_Set_BCWaitReply_Time(MKPD_T *pMKPD, unsigned int Bcwaitreply)
Настройка времени ожидания ОС в режиме КШ
Definition: mkpd.h:410
__RW uint32_t EP1
Definition: mkpd.h:51
#define MKPD_SETTING3_1750NS(x)
Definition: mkpd.h:215
__RO uint32_t EP2
Definition: mkpd.h:52
void MKPD_Set_Edge_Time(MKPD_T *pMKPD, uint32_t edge)
Установка времени запрещенного состояния дифференциального сигнала
Definition: mkpd.c:90
#define MKPD_BCTWO0_EP_ADDR0(x)
Definition: mkpd.h:102
static int MKPD_BC_IsReady(MKPD_T *pMKPD, MKPD_TX_T index)
Определяет готовность контроллера шины к новой транзакции
Definition: mkpd.h:471
MKPD_SETTING0_CHANNEL_T
Definition: mkpd.h:163
FlagStatus MKPD_Get_Endpoint_COM_Error(MKPD_T *pMKPD)
Возвращает значение флага ошибки в слове данных (используется в транзакциях №6, 10) ...
Definition: mkpd.c:304
void MKPD_Set_Monitor_Memory_Size(MKPD_T *pMKPD, uint32_t memory_size)
Задание размера буфера монитора
Definition: mkpd.c:336
#define MKPD_BCTWO0_SUB_ADDR0(x)
Definition: mkpd.h:101
FlagStatus MKPD_BC_IsWaiting(MKPD_T *pMKPD, MKPD_TX_T index)
Определяет, находится ли транзакция в очереди на передачу
Definition: mkpd.c:160
FlagStatus
Тип для состояний флагов
Definition: types.h:64
#define MKPD_SETTING3_2250NS(x)
Definition: mkpd.h:216
static void MKPD_Set_DecoderDisable(MKPD_T *pMKPD, unsigned int Disable_mask)
Программное отключение декодеров
Definition: mkpd.h:390
static void MKPD_Set_Clk_1250NS(MKPD_T *pMKPD, unsigned int Clk)
Тонкая настройка количества тактов системной частоты в 1250 нс
Definition: mkpd.h:430
void MKPD_Set_Monitor_Threshold(MKPD_T *pMKPD, uint32_t threshold)
Задание порогового значения для монитора
Definition: mkpd.c:347
static void MKPD_Set_BC_DMA_Address(MKPD_T *pMKPD, MKPD_TX_T index, uint32_t dma_addr)
Установка адреса DMA.
Definition: mkpd.h:568
__RW uint32_t MONITOR2
Definition: mkpd.h:60
FlagStatus MKPD_BC_IsTimeout(MKPD_T *pMKPD, MKPD_TX_T index)
Возвращает значение флага таймаута транзации
Definition: mkpd.c:214
__RW uint32_t SETTING0
Definition: mkpd.h:54
__RO uint32_t BCONE4
Definition: mkpd.h:44
__RO uint32_t MONITOR3
Definition: mkpd.h:61
void MKPD_Set_Inverting(MKPD_T *pMKPD, uint32_t invert_params)
Настройка параметров инвертирования дифференциального сигнала
volatile uint16_t Subaddr__Manage_mode
Definition: mkpd.h:249
void MKPD_Set_Monitor_DMA_Address(MKPD_T *pMKPD, uint32_t dma_monitor_addr)
Задание начального адреса DMA для монитора
Definition: mkpd.c:325
__RW uint32_t SETTING3
Definition: mkpd.h:57
void MKPD_Loopback_Disable(MKPD_T *pMKPD)
Отключение местного заворота линии
void MKPD_Set_Endpoint_RDATA(MKPD_T *pMKPD, uint32_t rdata)
Установка слова данных для передачи от ОУ
Definition: mkpd.c:272
__RW uint32_t SETTING1
Definition: mkpd.h:55
#define MKPD_BCTWO0_NUM(x)
Definition: mkpd.h:100
FlagStatus MKPD_BC_IsError(MKPD_T *pMKPD, MKPD_TX_T index)
Возвращает значение флага ошибки транзации
Definition: mkpd.c:196
#define MKPD_SETTING2_DECDIS(x)
Definition: mkpd.h:189
union Command_Word Command_Word_T
Структура для доступа к командному слову (КС)
uint32_t MKPD_BC_Reply_Word(MKPD_T *pMKPD, MKPD_TX_T index)
Возвращает ответное слово, полученное от ОУ
Definition: mkpd.c:232
#define MKPD_SETTING0_EP_ADDR(x)
Макросы и типы для регистра SETTING0.
Definition: mkpd.h:153
static void MKPD_Set_Clk_2250NS(MKPD_T *pMKPD, unsigned int Clk)
Тонкая настройка количества тактов системной частоты в 2250 нс
Definition: mkpd.h:460
__RW uint32_t BCONE0
Definition: mkpd.h:40
static void MKPD_Set_BC_Transaction_Format2(MKPD_T *pMKPD, MKPD_TX_T index, unsigned int type_trans, unsigned int manage_code)
Установка формата транзакции
Definition: mkpd.h:329
uint32_t MKPD_Get_Endpoint_COM_Data(MKPD_T *pMKPD)
Возвращает принятое от КШ слово данных
Definition: mkpd.c:284
static void MKPD_Set_IncWith(MKPD_T *pMKPD, unsigned int IncWith)
Настройка сигнала разрешения передачи
Definition: mkpd.h:379
void MKPD_Set_System_Clock(MKPD_T *pMKPD, uint32_t sys_clk)
Установка значения системной частоты
Definition: mkpd.c:49
__RW uint32_t EP0
Definition: mkpd.h:50
MKPD_TX_T
Выбор интерфейса передачи для контроллера шины
Definition: mkpd.h:237
__RW uint32_t MONITOR1
Definition: mkpd.h:59
#define MKPD_BCONE0_SUB_ADDR1(x)
Макросы для регистра BCONE0.
Definition: mkpd.h:68
#define MKPD_BCTWO2_ENA
Definition: mkpd.h:109
__RW uint32_t MONITOR0
Definition: mkpd.h:58
Структура командного слова (КС)
Definition: mkpd.h:246
#define MKPD_SETTING3_1500NS(x)
Definition: mkpd.h:214
#define MKPD_BCONE0_SUB_ADDR0(x)
Definition: mkpd.h:71
#define MKPD_SETTING2_500NS(x)
Макросы и типы для регистра SETTING2.
Definition: mkpd.h:183
__RW uint32_t BCONE2
Definition: mkpd.h:42
static void MKPD_Set_EP_Address(MKPD_T *pMKPD, uint32_t ep_addr)
Установка адреса оконечного устройства.
Definition: mkpd.h:344
__RO uint32_t BCTWO4
Definition: mkpd.h:49
static void MKPD_Set_Channel(MKPD_T *pMKPD, uint32_t channel)
Установка рабочего канала для контроллера шины.
Definition: mkpd.h:299
void MKPD_Set_BC_COM_Data(MKPD_T *pMKPD, MKPD_TX_T index, uint32_t com_data)
Установка слова данных для передачи в транзакциях формата 6 или 10.
Definition: mkpd.c:119
__RW uint32_t BCTWO2
Definition: mkpd.h:47
#define MKPD_BCONE2_MANAGE_CODE(x)
Definition: mkpd.h:78
#define MKPD_SETTING2_BCWAITREPLY(x)
Definition: mkpd.h:204
volatile uint16_t Tx_rx_mark
Definition: mkpd.h:251
#define MKPD_BCTWO0_SUB_ADDR1(x)
Макросы для регистра BCTWO0.
Definition: mkpd.h:98
static void MKPD_ConfigBusController(MKPD_T *pMKPD, uint32_t address_one, uint32_t address_two, uint32_t channel)
Настройка контроллера шины
Definition: mkpd.h:591
static void MKPD_ConfigEndpoint(MKPD_T *pMKPD, uint32_t address, uint32_t ep_address)
Настройка оконечного устройства
Definition: mkpd.h:743
volatile uint16_t EP_addr
Definition: mkpd.h:252
uint32_t MKPD_BC_Reply_Data(MKPD_T *pMKPD, MKPD_TX_T index)
Возвращает ответные данные, полученные от ОУ (для транзакций формата 5)
Definition: mkpd.c:250
volatile uint16_t Data_size__Command_code
Definition: mkpd.h:248
__RW uint32_t SETTING2
Definition: mkpd.h:56
MKPD_DECDIS_MODE_T
Definition: mkpd.h:195
#define MKPD_BCONE2_ENA
Definition: mkpd.h:79
static void MKPD_Set_Clk_1500NS(MKPD_T *pMKPD, unsigned int Clk)
Тонкая настройка количества тактов системной частоты в 1500 нс
Definition: mkpd.h:440