#ifndef __MULTICORE_MFBSP_H__ #define __MULTICORE_MFBSP_H__ // // Смещения регистров MFBSP // #define RG_TX 0x00 // Буфер передачи данных #define RG_RX 0x00 // Буфер приема данных #define RG_CSR 0x04 // Управление и состояние #define RG_DIR 0x08 // Управление направлением // порта ввода-вывода #define RG_GPIO_DR 0x0C // Данные порта ввода-вывода #define RG_TCTR 0x10 // Управление передатчиком #define RG_RCTR 0x14 // Управление приёмником #define RG_TSR 0x18 // Состояние передатчика #define RG_RSR 0x1C // Состояние приёмника #define RG_TCTR_RATE 0x20 // Управление темпом передачи данных #define RG_RCTR_RATE 0x24 // Управление темпом приёма данных #define RG_TSTART 0x28 // Запуск/останов передатчика без // изменения настроек передатчика #define RG_RSTART 0x2C // Запуск/останов передатчика без // изменения настроек приёмника #define RG_EMERG 0x30 // Регистр аварийного управления портом #define RG_IMASK 0x34 // Регистр маски прерываний от порта // // MFBSP_CSR - регистр управления MFBSP // #define F_LEN (1 << 0) #define F_LTRAN (1 << 1) #define F_LCLK_RATE(n) ((((n) & 1) << 2) | (((n) & 0x1e) << 10)) #define F_LSTAT(n) ((n) << 3) #define F_LRERR (1 << 5) #define F_LDW (1 << 6) #define F_SRQ_TX (1 << 7) #define F_SRQ_RX (1 << 8) #define F_SPI_I2S_EN (1 << 9) #define F_GET_LCLK_RATE(x) (((x) >> 2) & 1) | (((x) >> 10) & 0x1e) // // MFBSP_DIR - регистр управления направлением выводов MFBSP // #define F_RCLK_DIR (1 << 0) #define F_TCLK_DIR (1 << 1) #define F_RCS_DIR (1 << 2) #define F_TCS_DIR (1 << 3) #define F_RD_DIR (1 << 4) #define F_TD_DIR (1 << 5) // // F_RCTR - регистр управления приёмником MFBSP // #define F_REN (1 << 0) #define F_RMODE (1 << 1) #define F_RCLK_CP (1 << 2) #define F_RCS_CP (1 << 3) #define F_RDSPMODE (1 << 9) #define F_RNEG (1 << 10) #define F_RDEL (1 << 11) #define F_RWORDCNT(n) ((n) << 12) #define F_RWORDCNT_MASK F_RWORDCNT(0x1F) #define F_RCSNEG (1 << 18) #define F_RMBF (1 << 19) #define F_RWORDLEN(n) ((n) << 20) #define F_RWORDLEN_MASK F_RWORDCNT(0x3F) #define F_RPACK (1 << 25) #define F_RSIGN (1 << 26) #define F_RSWAP (1 << 27) #define F_RCLK_CONT (1 << 28) #define F_RCS_CONT (1 << 29) // // F_TCTR - регистр управления передатчиком MFBSP // #define F_TEN (1 << 0) #define F_TMODE (1 << 1) #define F_TD_ZER_EN (1 << 2) #define F_SS_DO (1 << 3) #define F_TDSPMODE (1 << 9) #define F_TNEG (1 << 10) #define F_TDEL (1 << 11) #define F_TWORDCNT(n) ((n) << 12) #define F_TWORDCNT_MASK F_TWORDCNT(0x1F) #define F_TCSNEG (1 << 18) #define F_TMBF (1 << 19) #define F_TWORDLEN(n) ((n) << 20) #define F_TWORDLEN_MASK F_TWORDCNT(0x3F) #define F_TPACK (1 << 25) #define F_TSWAP (1 << 27) #define F_TCLK_CONT (1 << 28) #define F_TCS_CONT (1 << 29) #define F_SS(n) (1 << (30 + (n))) // // MFBSP_GPIO_DR и MFBSP_DIR // #define F_GPIO_LACK (1 << 0) #define F_GPIO_LCLK (1 << 1) #define F_GPIO_LDAT(n) (1 << ((n) + 2)) // // MFBSP_RSR // #define F_RBE (1 << 0) #define F_RBF (1 << 1) #define F_RBHF (1 << 2) #define F_RBHL (1 << 3) #define F_RSBE (1 << 4) #define F_RSBF (1 << 5) #define F_RXBUF_R (1 << 8) #define F_RXBUF_D (1 << 9) #define F_RXBUF (1 << 10) #define F_RLEV(n) ((n) << 16) #define F_RB_DIFF(x) (((x) >> 24) & 0xF) // // MFBSP_TSR // #define F_TBE (1 << 0) #define F_TBF (1 << 1) #define F_TBHF (1 << 2) #define F_TBLL (1 << 3) #define F_TSBE (1 << 4) #define F_TSBF (1 << 5) #define F_TXBUF_R (1 << 8) #define F_TXBUF_D (1 << 9) #define F_TXBUF (1 << 10) #define F_TLEV(n) ((n) << 16) #define F_TBES(n) ((n) << 20) #define F_TB_DIFF(x) (((x) >> 24) & 0xF) // // MFBSP_RCTR_RATE // #define F_RCLK_RATE(n) (n) #define F_RSS_RATE(n) ((n) << 12) #define F_RCS_RATE(n) ((n) << 16) // // MFBSP_TCTR_RATE // #define F_TCLK_RATE(n) (n) #define F_TSS_RATE(n) ((n) << 12) #define F_TCS_RATE(n) ((n) << 16) // // MFBSP_EMERG // #define F_RST_LPTBUF (1 << 0) #define F_RST_TXBUF (1 << 1) #define F_RST_RXBUF (1 << 2) #define F_RST_TX_DBG (1 << 4) #define F_RST_RX_DBG (1 << 5) // // MFBSP_IMASK // #define F_LPT_IRQ_EN (1 << 0) #define F_TX_ERR_IRQ_EN (1 << 4) #define F_TX_LEV_IRQ_EN (1 << 5) #define F_TXBUF_R_EN (1 << 6) #define F_RX_ERR_IRQ_EN (1 << 12) #define F_RX_LEV_IRQ_EN (1 << 13) #define F_RXBUF_R_EN (1 << 14) #endif