| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719 |
- /*******************************************************************************
- 版权所有:
- 文件名称: bspconfig.h
- 文件版本: 01.01
- 创建作者: sunxi
- 创建日期: 2012-05-10
- 功能说明: 冷火实时LINUX的配置文件。
- 其它说明:
- 修改记录:
- */
- #ifndef _BSPCONFIG_H_
- #define _BSPCONFIG_H_
- #include "rt.h"
- #include "MCF54418.h"
- #include "gpio_def.h"
- #include "build_info.h"
- #include "defineSys.h"
- //----------------------------- BSP版本 ---------------------------
- // #define BSP_FTU 1 // 单回路配电终端,f308
- //#define BSP_DTU2 2 // DTU2.0 f306
- //#define BSP_DTU3 3 // DTU3.0
- #define BSP_DFTU 4 // DTU、FTU混合版本;支持4回路二遥标准型DTU、单回路FTU;支持电磁式、电子式互感器。
- #define BSP_VERSION BSP_DFTU
- #define __DFTU_V4_HV0102__ 1 // sunxi 20180724 第二版
- //BSP类型.如果是FTU,打开宏BSP_TYPE_FTU。如果是DTU,打开宏BSP_TYPE_DTU。两者只能选其一,不能同时打开。
- #define BSP_TYPE_FTU
- //#define BSP_TYPE_DTU
- //#define VER_NUM 0x00010205 // 版本号
- //#define VER_TIME "2019-02-09 13:12:26" // 程序生成时间
- #define PROTECT_AC_ADJUST //保护电流校准
- #define EQUIP_NAME_STRING "OLE-DFTU" // 装置名称
- #define EQUIP_TYPE_STRING "OLE-DFTU" // 装置类型
- #define KO_FILE_NAME "/app/dtu_t536"
- #define KO_FILE_NAME_1 "dtu_t536"
- //----------------------------- 设备架构 ---------------------------
- #define EQU_SLOT_NUM_MAX 16
- #define EQU_SLOT_MAIN 0 // 主板
- #define EQU_SLOT_KZ 1 // 控制板
- #define EQU_SLOT_HMI 2 // 面板
- #define EQU_SLOT_AC_BEGIN 1 // 采样板起始槽位
- #define EQU_SLOT_AC_NUM 1 // 一个装置支持AC板的最大槽数。
- #define EQU_SLOT_AC_CHN 16 // 每个槽中支持的最大AC通道数
- #define EQU_DB_YX_NUM 32 // 数据总线长度
- //----------------------------- 线路开关 ---------------------------
- #define SWITCH_NUM_MAX 6 // 开关数量,本装置实际支持的开关数,不包含级联部分。
- #define SWITCH_NUM_EXT 31 // 扩展开关数量,后面部分供级联用。
- #define SWITCH_NUM_EXT_PUB 32 // 扩展开关数量加公共部分,后面部分供级联用。此值不能超过32
- //----------------------------- 设备级联 ---------------------------
- #ifdef FUN_NETWORK_ADD40
- #define CFG_LINK_104_NUM 48 // 104级联数目
- #else
- #define CFG_LINK_104_NUM 8 // 104级联数目
- #endif
- #define CFG_LINK_101_NUM 6 // 101级联数目
- #define CFG_LONK_EQU_SOE_NUM 10 // 级联装置保存SOE数量
- //----------------------------- CPU主时钟 ---------------------------
- #define CFG_EXT_OSC_CLK 50000000 //外部晶体频率
- #define CFG_CPU_CLK 250000000 //CPU时钟根据外部晶体频率和系统配置算出来
- #define CFG_VECTOR_ADDRESS 0x40000000
- //----------------------------- 中断级别 ---------------------------
- //MCF54418用3bits表示中断级别(LEVEL),其中0表示不产生中断,7表示不可屏蔽中断。
- //数字越大,中断优先级越高。由于我们将来有可能在一颗CPU上同时运行保护和人机功能,
- //所以我们将中断分为两个部分:实时(保护)和非实时(人机)。中断级别1~3分配给非实时部分,
- //4~6分配给实时部分。在原Linux中关中断时只屏蔽中断1~3,不屏蔽4~6。
- //MCF54418有三个中断控制器INTC0、INTC1、INTC2,每个中断控制器有64个中断源。在设置为相同
- //中断级别的情况下,INTC0的优先级最高,INTC2最低;在相同的中断控制器中,数值大的优先级高,
- //数值小的优先级低: 63最高,0最低。
- //NET1: INTC0(49~61)
- //NET0: INTC0(36~48)
- //DTM(0~3): INTC0(32~35)
- //UART(0~3): INTC0(26~29)
- //DMA INTC0(8~24)
- //EPORT INTC0(1~7)
- //UART(4~9): INTC1(48~53)
- //CAN1: INTC1(04~07)
- //CAN0: INTC1(00~03)
- //PIT(0~3): INTC2(13~16)
- //实时
- #define CFG_INT_LEVEL_DMA 6 // 采样DMA中断
- #define CFG_INT_LEVEL_PIT 6 // PIT3,156US
- #define CFG_INT_LEVEL_CLOCK 5 // GPS对时,ms定时器
- #define CFG_INT_LEVEL_FREQ 5 // 频率测量
- #define CFG_INT_LEVEL_CAN 5 // CAN总线
- #define CFG_INT_LEVEL_5MS 4 // 保护中断,PIT2,5ms,保护中断在特定的情况下持续时间太长,所以优先级不能高于clock和测频。
- //非实时。级别相同的,依MCF54418的规则,排前面的优先级更高。
- //非实时中断,如果没有指定优先级,在request_irq函数中将默认指定为2。
- #define CFG_INT_LEVEL_UART 3 // 2个外扩485,一个调试UART、一个打印UART、一个面板通讯485.
- #define CFG_INT_LEVEL_DTIM_KERNEL 2 // LINUX 内核 DTIM
- #define CFG_INT_LEVEL_ETHERNET 1 // 2个ETHERNET口
- //----------------------------- 外部中断 ---------------------------
- #define CFG_EPORT_VECTOR_BEGIN 64
- //IRQ1,GPS信号输入管脚,非中断
- #define CFG_INT_VECTOR_IRQ1 (CFG_EPORT_VECTOR_BEGIN + 1)
- //IRQ2,INT_B,DP83849
- #define CFG_INT_VECTOR_NET_0 (CFG_EPORT_VECTOR_BEGIN + 2)
- //IRQ3,INT_A,DP83849
- #define CFG_INT_VECTOR_NET_1 (CFG_EPORT_VECTOR_BEGIN + 3)
- //IRQ4,DREQ0
- #define CFG_INT_VECTOR_IRQ4 (CFG_EPORT_VECTOR_BEGIN + 4)
- //IRQ6,无
- #define CFG_INT_VECTOR_IRQ6 (CFG_EPORT_VECTOR_BEGIN + 6)
- //IRQ7 ,无
- #define CFG_INT_VECTOR_IRQ7 (CFG_EPORT_VECTOR_BEGIN + 7)
- //-------------------------------- FlexBus -----------------------------------
- //目前假设CPU最高频率为250MHZ,那么FlexBus的时钟频率为62.5MHZ,周期16ns。
- //默认情况下每个占用256M地址空间,基址为片选索引乘256M。
- //CS0,NOR FLASH,在U-BOOT中设置,kernel中不重新设置。
- //CS1,外部AD1
- //-------------------------------- 网络 --------------------------------
- //
- #define CFG_ETH_MAX_PHY 4
- #if defined NET3_IP5
- #define CFG_ETH_MAX_LOGIC 5 //逻辑网卡最大数量
- #elif defined NET4_IP5
- #define CFG_ETH_MAX_LOGIC 5 //逻辑网卡最大数量
- #else
- #define CFG_ETH_MAX_LOGIC 3 //逻辑网卡最大数量
- #endif
- //-------------------------------- ADC --------------------------------
- //
- //#define __MINI_DTU__ //小型化DTU
- #ifdef __MINI_DTU__
- #define BRAM_CTRL_0 0x80000000
- #else
- #define BRAM_CTRL_0 0x40000000
- #endif
- #define MEM_LEN (1024 * 4)
- #define DIN_OFFSET 0x9000
- #define WRITE_PTR_OFFSET 0x0FF0
- #define BRAM_LEN 0x1000
- #define FREN1_CNT_OFFSET 0x0FF4
- #define ADC_FOLLOW_FREN1_OFFSET 0x0000
- #define ADC_WRITE_PTR_OFFSET 0x0FF0
- #define ADC_CH01_OFFSET 0x1000
- #define ADC_CH23_OFFSET 0x2000
- #define ADC_CH45_OFFSET 0x3000
- #define ADC_CH67_OFFSET 0x4000
- #define ADC_CH89_OFFSET 0x5000
- #define ADC_CHAB_OFFSET 0x6000
- #define ADC_CHCD_OFFSET 0x7000
- #define ADC_CHEF_OFFSET 0x8000
- #define CFG_ADC_BASE_ADDR 0x1000
- #define BRAM_CTRL_MEM_SIZE 0x1000
- //FUXI 共享内存地址,请参看《fuxi核间通信结构体定义.doc》
- //1. linux核->裸核空间定义如下:
- #define SHM_ADDR_D_FREQ_TR 0x00000000 //频率跟踪
- #define SHM_ADDR_D_RFV_1 0x00000040 //第一片AD7616参考电压范围
- #define SHM_ADDR_D_RFV_2 0x00000080 //第二片AD7616参考电压范围
- #define SHM_ADDR_D_RFV_3 0x000000C0 //第三片AD7616参考电压范围
- #define SHM_ADDR_D_RFV_4 0x00000100 //第四片AD7616参考电压范围
- #define SHM_ADDR_D_TIME 0x00001000 //系统时间 linux向裸核校时
- #define SHM_ADDR_D_HB 0x00001040 //心跳
- //2. 裸核->linux核空间定义如下:
- #define SHM_ADDR_U_TIME 0x00001000 //系统时间 裸核向linux校时
- #define SHM_ADDR_U_FREQ 0x00001040 //频率
- #define SHM_ADDR_U_DC 0x00001080 //直流
- #define SHM_ADDR_U_WP 0x000010C0 //AD7616采样点写指针
- #define SHM_ADDR_U_WR 0x00001100 //打印信息读写指针
- #define SHM_ADDR_U_VER 0x00001140 //裸核版本信息
- #define SHM_ADDR_U_PRO_W_F 0x00001180 //裸核程序空间写完标志结构体
- #define SHM_ADDR_U_DEBUG_MSG 0x00005000 //打印缓冲区
- #define SHM_ADDR_U_E907_PRO 0x00005200 //存放裸核的程序
- #define SHM_ADDR_U_ADC_1 0x00040000 //第一片AD7616 采样数据区
- #define SHM_ADDR_U_ADC_2 0x00060000 //第二片AD7616 采样数据区
- #define SHM_ADDR_U_ADC_3 0x00080000 //第三片AD7616 采样数据区
- #define SHM_ADDR_U_ADC_4 0x000A0000 //第四片AD7616 采样数据区
- #define SHM_ADC_SIZE (SHM_ADDR_U_ADC_2 - SHM_ADDR_U_ADC_1)
- //-------------------------------- ADC --------------------------------
- //
- #define CFG_ADC_DOTS_PER_PERIOD 32 // 每个周波的采样点数。
- #define CFG_ADC_DOTS_PER_CHANNEL 256 // 每个ADC通道保存的采样点数(8个周波)。
- #define CFG_ADC_DOTS_MASK (CFG_ADC_DOTS_PER_CHANNEL-1)// 每个ADC通道保存的采样点数的MASK。
- #define CFG_ADC_BUF_MASK (~(CFG_ADC_DOTS_PER_CHANNEL*2)) // 提供给MAC设置用(short->byte*2)
- #define CFG_ADC_OS_BASE 0 // 过采样基数
- #define CFG_ADC_OS_NUM (1<<CFG_ADC_OS_BASE) // 过采样倍数
- #define CFG_ADC_CHANNEL 32 // ADC采样的通道数
- #define CFG_ADC_CHANNEL_DC 1 // 直流ADC通道数量
- #define CFG_ADC_CHANNEL_ALL (CFG_ADC_CHANNEL + CFG_ADC_CHANNEL_DC) // 所有通道数
- #define CFG_ADC_CHANNEL_ZERO (CFG_ADC_CHANNEL_ALL) // 全0通道索引
- #define CFG_ADC_DMA_CHANNEL 8 // ADC占用4个DMA通道8~11
- #define CFG_ADC_DMA_CHANNEL_REC (CFG_ADC_DMA_CHANNEL+EQU_SLOT_AC_NUM) // ADC录波占用1个DMA通道.
- #define CFG_ADC_DMA_VECTOR_REC (64+16+EQU_SLOT_AC_NUM) // DMA通道8对应INTC0的中断向量16.
- //-----------------------------------------------------------------------------
- //-------------------------------- PIT Timers --------------------------------
- #define CFG_PIT_KERNEL 0 // linux 内核调度定时器
- #define CFG_PIT_1 1 // CAN 1ms定时器 (优先级高于linux kernel)
- #define CFG_PIT_5MS 2 // 5ms保护中断
- #define CFG_PIT_SAMPLE 3 // 156us采样中断
- #define CFG_PIT_VECTOR_BEGIN (192 + 13) //中断向量
- #define CFG_PIT_CD_BEGIN (32)
- /*PMR寄存器值PMRn[PM] = (T * fsys/2) / 2^PCSRn[PRE] - 1*/
- //数字大的PIT中断优先级高
- #define PIT_PERIOD_156US ((CFG_CPU_CLK/2)/6400/1 - 1) // 1分频
- #define PIT_PERIOD_5MS ((CFG_CPU_CLK/2)/200/16 - 1) // 16分频
- //-------------------------------- DMA Timers --------------------------------
- #ifdef __DFTU_V4_HV0102__ // sunxi 20180724 第二版
- #define CFG_DTIM_FREQ0 2 // 测频0
- #else // sunxi 20180724 第一版
- #define CFG_DTIM_FREQ0 0 // 测频0
- #endif
- #define CFG_DTIM_FREQ1 3 //测频1
- #define CFG_DTIM_GPS_CAP 1 // GPS对时,捕获(与微秒定时器共用)
- #define CFG_DTIM_GPS_REF 0 // GPS对时,参考输出
- #define CFG_DTIM_USTIMER (CFG_DTIM_GPS_CAP) // 微秒定时器(与GPS对时共用)
- #define CFG_DTIM_VECTOR_BEGIN (64 + 32) //中断向量
- //-------------------------------- 测频 ----------------------------------------
- #define CFG_FREQ_NUM 2 //一路测频
- //-------------------------------- UART ----------------------------------------
- #define CFG_UART_INT_VECTOR(x) ((x<4)? (90+x):(176+x))
- /*
- FUXI:
- UART0 -> /dev/ttyS0
- UART1 -> /dev/ttyS1
- CFG_UART_232_0 -> /dev/ttyS2
- CFG_UART_232_1 -> /dev/ttyS3
- CFG_UART_485_0 -> /dev/ttyS4
- CFG_UART_485_1 -> /dev/ttyS5
- CFG_UART_485_2 -> /dev/ttyS8
- ...
- */
- //TODO. noted by sunxi: 根据实际情况,定义串口号
- #define CFG_UART_RT_CONSOLE 0 //内部已实现console功能
- #define CFG_UART_HMI 1 //
- #define CFG_UART_232_0 2 //232_2
- #define CFG_UART_232_1 3 //232_3
- #define CFG_UART_485_0 4 //485_4
- #define CFG_UART_485_1 5 //485_5
- #define CFG_UART_485_2 8 //485_8
- #define CFG_UART_485_3 7
- #define CFG_UART_GPRS_IN 10 //此UART物理上不存在,虚拟给内部GPRS用
- #define CFG_UART_GPS (CFG_UART_232_0)//暂定
- #define CFG_UART_CHIP_S1 11 //此UART物理上不存在,虚拟给南网加密芯片用
- #define CFG_UART_NUM_MAX 11 // 最大UART数量
- #ifdef __GOOSE_USING_DOUBLE_ETH__
- #define CFG_ETH_NUM_MAX 3 //网络数量
- #else
- #define CFG_ETH_NUM_MAX 2
- #endif
- //-------------------------------- CAN ----------------------------------------
- #define CFG_CAN_VECTOR_BEGIN (128 + 0) //中断向量
- //-------------------------------- DMA ----------------------------------------
- #define CFG_DMA_VECTOR_BEGIN (64 + 8) //中断向量
- //-------------------------------- I2C ----------------------------------------
- #if 1
- /* I2C CMODULE 2 */
- #define MCF_I2AR *(volatile unsigned char *)(0xEC010000) /* I2C Address */
- #define MCF_I2FDR *(volatile unsigned char *)(0xEC010004) /* I2C Frequency Divider */
- #define MCF_I2CR *(volatile unsigned char *)(0xEC010008) /* I2C Control */
- #define MCF_I2SR *(volatile unsigned char *)(0xEC01000C) /* I2C Status */
- #define MCF_I2DR *(volatile unsigned char *)(0xEC010010) /* I2C Data I/O */
- #else
- /* I2C MODULE 0 */
- #define MCF_I2AR *(volatile unsigned char *)(0xFC058000) /* I2C Address */
- #define MCF_I2FDR *(volatile unsigned char *)(0xFC058004) /* I2C Frequency Divider */
- #define MCF_I2CR *(volatile unsigned char *)(0xFC058008) /* I2C Control */
- #define MCF_I2SR *(volatile unsigned char *)(0xFC05800C) /* I2C Status */
- #define MCF_I2DR *(volatile unsigned char *)(0xFC058010) /* I2C Data I/O */
- #endif
- //-------------------------------- E2PROM(24LC256) -----------------------------
- #ifdef SOE_PARA_ALL_SAVE
- #define CFG_E2PROM_SIZE (256*1024)
- #else
- #define CFG_E2PROM_SIZE (128*1024)
- #endif
- #define CFG_E2PROM_PAGE_SIZE 64
- //-------------------------------- RTC(DS1338) ---------------------------------
- #define CFG_RTC_BUFFER_SIZE (16)
- #define CFG_RTC_NVRAM_SIZE (1)
- //-------------------------------- DSPI ----------------------------------------
- #define CFG_DSPI_INDEX 0
- //-------------------------------- FLASH(AT45DB321) ----------------------------
- #define CFG_FLASH_PAGE_SIZE 512 //页面大小
- #define CFG_FLASH_PAGE_NUM 8192 //页面数
- #define CFG_FLASH_SIZE (CFG_FLASH_PAGE_SIZE*CFG_FLASH_PAGE_NUM)//FLASH的大小
- //-------------------------------- GPIO --------------------------------------
- /*
- // 核心板GPIO配置
- NOR_WP:MII0_COL/RMII1_MDC/ULPI_STP/GPIOJ0
- WDOG:DSPI0_PCS0/SS_B/I2C3_SDA/SDHC_DAT3/GPIOD7
- RUN:SDHC_DAT1/PWMA2/DSPI1_PCS1/GPIOF0
- ERR:SDHC_DAT2/PWMB1/DSPI1_PCS2/GPIOF1
- PWM1:SDHC_CMD/PWMB0/DSPI1_SIN/GPIOG6
- PWM2:SDHC_CLK/PWMA0/DSPI1_SCK/GPIOG5
- PWM3:SDHC_DAT0/PWMB2/DSPI1_SOUT/GPIOG7
- PWM4:SDHC_DAT3/PWMA1/DSPI1_PCS0/GPIOF2
- DSPIO_PCS1:DSPI0_PCS1/SBF_CS_B/GPIOC0
- GPIO_0:SSI0_MCLK/SSI_CLKIN/SIM1_CLK/GPIOH4
- GPIO_1:SIM0_XMT/PWM_FAULT2/SDHC_DAT7/GPIOG4/RGPIO
- GPIO_2:SIM0_VEN/PWM_FAULT0/GPIOG3/RGPIO
- GPIO_3:SIM0_CLK/PWM_FAULT1/SDHC_DAT4/GPIOG0/RGPIO
- GPIO_4:SIM0_RST/PWM_FORCE/SDHC_DAT6/GPIOG2/RGPIO
- GPIO_5:SIM0_PD/PWM_SYNC/SDHC_DAT5/GPIOG1/RGPIO
- GPIO_6:DDATA[0]/GPIOI6
- GPIO_7:DDATA[1]/GPIOI7
- GPIO_8:DDATA[2]/GPIOH0
- GPIO_9:DDATA[3]/GPIOH1
- GPIO_10:MII0_TXER/RMII1_MDIO/ULPI_DATA4/GPIOK7
- */
- //看门狗/运行灯(看门狗边沿有效,运行灯低有效)
- #define GPIO_WATCHDOG_BIT 7
- #define GPIO_WATCHDOG_LOW() GPIO_D_L(GPIO_WATCHDOG_BIT)
- #define GPIO_WATCHDOG_HIGH() GPIO_D_H(GPIO_WATCHDOG_BIT)
- #define GPIO_WATCHDOG_STATUS() GPIO_D_S(GPIO_WATCHDOG_BIT)
- #define GPIO_WATCHDOG_INIT() GPIO_D_L(GPIO_WATCHDOG_BIT); \
- GPIO_D_O(GPIO_WATCHDOG_BIT)
- //NOR flash写保护(低禁止写) J0
- #define GPIO_WP_NORFLASH_BIT 0
- #define GPIO_WP_NORFLASH_LOW() GPIO_J_L(GPIO_WP_NORFLASH_BIT)
- #define GPIO_WP_NORFLASH_HIGH() GPIO_J_H(GPIO_WP_NORFLASH_BIT)
- #define GPIO_WP_NORFLASH_INIT() GPIO_J_L(GPIO_WP_NORFLASH_BIT); \
- GPIO_J_O(GPIO_WP_NORFLASH_BIT)
- #if 0
- //GPIO_DSPI_CS_FLASH = C0
- #define GPIO_DSPI_CS_FLASH_BIT 0
- #define GPIO_DSPI_CS_FLASH_LOW() GPIO_C_L(GPIO_DSPI_CS_FLASH_BIT)
- #define GPIO_DSPI_CS_FLASH_HIGH() GPIO_C_H(GPIO_DSPI_CS_FLASH_BIT)
- #define GPIO_DSPI_CS_FLASH_INIT() GPIO_DSPI_CS_FLASH_HIGH();\
- GPIO_C_O(GPIO_DSPI_CS_FLASH_BIT)
- #else
- //ESAM加密芯片
- //DSPI0_CTRN:IRQ7:C6(电源控制)
- //#define GPIO_ESAM_POWER_BIT 6
- #define GPIO_ESAM_POWER_LOW() esam_power_ctrl(0)//GPIO_C_L(GPIO_ESAM_POWER_BIT)
- #define GPIO_ESAM_POWER_HIGH() esam_power_ctrl(1)//GPIO_C_H(GPIO_ESAM_POWER_BIT)
- //#define GPIO_ESAM_POWER_INIT() GPIO_C_L(GPIO_ESAM_POWER_BIT);GPIO_C_O(GPIO_ESAM_POWER_BIT)
- //GPIO_DSPI_CS_ESAM = C0(片选控制)
- //#define GPIO_DSPI_CS_ESAM_BIT 0
- //#define GPIO_DSPI_CS_ESAM_LOW() GPIO_C_L(GPIO_DSPI_CS_ESAM_BIT)
- //#define GPIO_DSPI_CS_ESAM_HIGH() GPIO_C_H(GPIO_DSPI_CS_ESAM_BIT)
- //#define GPIO_DSPI_CS_ESAM_INIT() GPIO_DSPI_CS_ESAM_HIGH();GPIO_C_O(GPIO_DSPI_CS_ESAM_BIT)
- #endif
- //GPS_对时,使用两个管脚,一个用作捕获,一个用作检查检查管脚电平。
- //这是因为用作捕获的管脚,在MCF5441X上没有办法取得管脚的状态
- //GPS_INT1 = IRQ1/PC1
- //GPS_INT2 = T3IN
- #define GPIO_GPS_INT_BIT 1
- #define GPIO_GPS_INT_STATUS() GPIO_C_S(GPIO_GPS_INT_BIT)
- #define GPIO_GPS_INT_INIT() if(0)//do{ MCF_PAD_PAR_TIMER |= (3<<(CFG_DTIM_GPS_CAP*2));}while(0)
- //GPS对时输出(给各个分板)
- #define GPIO_GPS_LOW() {}
- #define GPIO_GPS_HIGH() {}
- #define GPIO_GPS_INIT() {}
- //外部ADC
- //ADC_BUSY1:IRQ4:C4
- #define GPIO_ADC_BUSY1_BIT 4
- #define GPIO_ADC_BUSY1_STATUS() GPIO_C_S(GPIO_ADC_BUSY1_BIT)
- #define GPIO_ADC_BUSY1_INIT() GPIO_C_I(GPIO_ADC_BUSY1_BIT)
- //ADC_RESET:GPIO_1:G4
- #define GPIO_ADC_RESET_BIT 4
- #define GPIO_ADC_RESET_LOW() GPIO_G_L(GPIO_ADC_RESET_BIT)
- #define GPIO_ADC_RESET_HIGH() GPIO_G_H(GPIO_ADC_RESET_BIT)
- #define GPIO_ADC_RESET_INIT() GPIO_G_L(GPIO_ADC_RESET_BIT); \
- GPIO_G_O(GPIO_ADC_RESET_BIT)
- //ADC_CONVST:GPIO_2:G3
- #define GPIO_ADC_CONVST_BIT 3
- #define GPIO_ADC_CONVST_LOW() GPIO_G_L(GPIO_ADC_CONVST_BIT)
- #define GPIO_ADC_CONVST_HIGH() GPIO_G_H(GPIO_ADC_CONVST_BIT)
- #define GPIO_ADC_CONVST_INIT() GPIO_G_L(GPIO_ADC_CONVST_BIT); \
- GPIO_G_O(GPIO_ADC_CONVST_BIT)
- //LED
- //GPIO_LED_RUN F0
- #define GPIO_LED_RUN_BIT 0
- #define GPIO_LED_RUN_ON() GPIO_F_L(GPIO_LED_RUN_BIT)
- #define GPIO_LED_RUN_OFF() GPIO_F_H(GPIO_LED_RUN_BIT)
- #define GPIO_LED_RUN_STATUS() GPIO_F_S(GPIO_LED_RUN_BIT)
- #define GPIO_LED_RUN_INIT() GPIO_F_H(GPIO_LED_RUN_BIT); \
- GPIO_F_O(GPIO_LED_RUN_BIT)
- //GIIO_LED_ERR F1
- #define GPIO_LED_ERR_BIT 1
- #define GPIO_LED_ERR_ON() GPIO_F_L(GPIO_LED_ERR_BIT)
- #define GPIO_LED_ERR_OFF() GPIO_F_H(GPIO_LED_ERR_BIT)
- #define GPIO_LED_ERR_STATUS() GPIO_F_S(GPIO_LED_ERR_BIT)
- #define GPIO_LED_ERR_INIT() GPIO_F_H(GPIO_LED_ERR_BIT); \
- GPIO_F_O(GPIO_LED_ERR_BIT)
- #ifdef __DFTU_V4_HV0102__ // sunxi 20180724 第二版
- //GPIO_LED_COMM 去掉了
- #define GPIO_LED_COMM_ON() do{}while(0)
- #define GPIO_LED_COMM_OFF() do{}while(0)
- #define GPIO_LED_COMM_STATUS() 0
- #define GPIO_LED_COMM_INIT() do{}while(0)
- //GPIO_LED_ACT 去掉了
- #define GPIO_LED_ACT_ON() do{}while(0)
- #define GPIO_LED_ACT_OFF() do{}while(0)
- #define GPIO_LED_ACT_STATUS() 0
- #define GPIO_LED_ACT_INIT() do{}while(0)
- #else // sunxi 20180724 第一版
- //GPIO_LED_COMM H4
- #define GPIO_LED_COMM_BIT 4
- #define GPIO_LED_COMM_ON() GPIO_H_L(GPIO_LED_COMM_BIT)
- #define GPIO_LED_COMM_OFF() GPIO_H_H(GPIO_LED_COMM_BIT)
- #define GPIO_LED_COMM_STATUS() GPIO_H_S(GPIO_LED_COMM_BIT)
- #define GPIO_LED_COMM_INIT() GPIO_H_H(GPIO_LED_COMM_BIT); \
- GPIO_H_O(GPIO_LED_COMM_BIT)
- //GPIO_LED_ACT G0
- #define GPIO_LED_ACT_BIT 0
- #define GPIO_LED_ACT_ON() GPIO_G_L(GPIO_LED_ACT_BIT)
- #define GPIO_LED_ACT_OFF() GPIO_G_H(GPIO_LED_ACT_BIT)
- #define GPIO_LED_ACT_STATUS() GPIO_G_S(GPIO_LED_ACT_BIT)
- #define GPIO_LED_ACT_INIT() GPIO_G_H(GPIO_LED_ACT_BIT); \
- GPIO_G_O(GPIO_LED_ACT_BIT)
- #endif
- //开出(16路,低有效)
- //KOUT0 I6
- #define GPIO_KOUT0_BIT 6
- #define GPIO_KOUT0_ON() GPIO_I_L(GPIO_KOUT0_BIT)
- #define GPIO_KOUT0_OFF() GPIO_I_H(GPIO_KOUT0_BIT)
- #define GPIO_KOUT0_INIT() GPIO_I_H(GPIO_KOUT0_BIT); \
- GPIO_I_O(GPIO_KOUT0_BIT)
- //KOUT1 I7
- #define GPIO_KOUT1_BIT 7
- #define GPIO_KOUT1_ON() GPIO_I_L(GPIO_KOUT1_BIT)
- #define GPIO_KOUT1_OFF() GPIO_I_H(GPIO_KOUT1_BIT)
- #define GPIO_KOUT1_INIT() GPIO_I_H(GPIO_KOUT1_BIT); \
- GPIO_I_O(GPIO_KOUT1_BIT)
- //KOUT2 H0
- #define GPIO_KOUT2_BIT 0
- #define GPIO_KOUT2_ON() GPIO_H_L(GPIO_KOUT2_BIT)
- #define GPIO_KOUT2_OFF() GPIO_H_H(GPIO_KOUT2_BIT)
- #define GPIO_KOUT2_INIT() GPIO_H_H(GPIO_KOUT2_BIT); \
- GPIO_H_O(GPIO_KOUT2_BIT)
- //KOUT3 H1
- #define GPIO_KOUT3_BIT 1
- #define GPIO_KOUT3_ON() GPIO_H_L(GPIO_KOUT3_BIT)
- #define GPIO_KOUT3_OFF() GPIO_H_H(GPIO_KOUT3_BIT)
- #define GPIO_KOUT3_INIT() GPIO_H_H(GPIO_KOUT3_BIT); \
- GPIO_H_O(GPIO_KOUT3_BIT)
- //KOUT4 G2
- #define GPIO_KOUT4_BIT 2
- #define GPIO_KOUT4_ON() GPIO_G_L(GPIO_KOUT4_BIT)
- #define GPIO_KOUT4_OFF() GPIO_G_H(GPIO_KOUT4_BIT)
- #define GPIO_KOUT4_INIT() GPIO_G_H(GPIO_KOUT4_BIT); \
- GPIO_G_O(GPIO_KOUT4_BIT)
- //KOUT5 G1
- #define GPIO_KOUT5_BIT 1
- #define GPIO_KOUT5_ON() GPIO_G_L(GPIO_KOUT5_BIT)
- #define GPIO_KOUT5_OFF() GPIO_G_H(GPIO_KOUT5_BIT)
- #define GPIO_KOUT5_INIT() GPIO_G_H(GPIO_KOUT5_BIT); \
- GPIO_G_O(GPIO_KOUT5_BIT)
- #ifdef __DFTU_V4_HV0102__ // sunxi 20180724 第二版
- //KOUT6 H4
- #define GPIO_KOUT6_BIT 4
- #define GPIO_KOUT6_ON() GPIO_H_L(GPIO_KOUT6_BIT)
- #define GPIO_KOUT6_OFF() GPIO_H_H(GPIO_KOUT6_BIT)
- #define GPIO_KOUT6_INIT() GPIO_H_H(GPIO_KOUT6_BIT); \
- GPIO_H_O(GPIO_KOUT6_BIT);
- //KOUT7 G0
- #define GPIO_KOUT7_BIT 0
- #define GPIO_KOUT7_ON() GPIO_G_L(GPIO_KOUT7_BIT)
- #define GPIO_KOUT7_OFF() GPIO_G_H(GPIO_KOUT7_BIT)
- #define GPIO_KOUT7_INIT() GPIO_G_H(GPIO_KOUT7_BIT); \
- GPIO_G_O(GPIO_KOUT7_BIT);
- #else // sunxi 20180724 第一版
- //KOUT6 E5
- #define GPIO_KOUT6_BIT 5
- #define GPIO_KOUT6_ON() GPIO_E_L(GPIO_KOUT6_BIT)
- #define GPIO_KOUT6_OFF() GPIO_E_H(GPIO_KOUT6_BIT)
- #define GPIO_KOUT6_INIT() GPIO_E_H(GPIO_KOUT6_BIT); \
- GPIO_E_O(GPIO_KOUT6_BIT); \
- {MCF_GPIO_PAR_UART2 =(MCF_GPIO_PAR_UART2 & MCF_GPIO_PAR_UART2_U2RTS_MASK);}while(0)
- #if 0
- //KOUT7 K7
- #define GPIO_KOUT7_BIT 7
- #define GPIO_KOUT7_ON() GPIO_K_L(GPIO_KOUT7_BIT)
- #define GPIO_KOUT7_OFF() GPIO_K_H(GPIO_KOUT7_BIT)
- #define GPIO_KOUT7_INIT() GPIO_K_H(GPIO_KOUT7_BIT); \
- GPIO_K_O(GPIO_KOUT7_BIT); \
- do{ MCF_PAD_PAR_FEC = 0X05;}while(0)
- #else
- //KOUT7 G0
- #define GPIO_KOUT7_BIT 0
- #define GPIO_KOUT7_ON() GPIO_G_L(GPIO_KOUT7_BIT)
- #define GPIO_KOUT7_OFF() GPIO_G_H(GPIO_KOUT7_BIT)
- #define GPIO_KOUT7_INIT() GPIO_G_H(GPIO_KOUT7_BIT); \
- GPIO_G_O(GPIO_KOUT7_BIT);
- #endif
- #endif
- //PWM0 G6
- #define GPIO_KOUT_PWM0_BIT 6
- #define GPIO_KOUT_PWM0_ON() GPIO_G_L(GPIO_KOUT_PWM0_BIT)
- #define GPIO_KOUT_PWM0_OFF() GPIO_G_H(GPIO_KOUT_PWM0_BIT)
- #define GPIO_KOUT_PWM0_INIT() GPIO_G_H(GPIO_KOUT_PWM0_BIT); \
- GPIO_G_O(GPIO_KOUT_PWM0_BIT)
- //PWM1 G5
- #define GPIO_KOUT_PWM1_BIT 5
- #define GPIO_KOUT_PWM1_ON() GPIO_G_L(GPIO_KOUT_PWM1_BIT)
- #define GPIO_KOUT_PWM1_OFF() GPIO_G_H(GPIO_KOUT_PWM1_BIT)
- #define GPIO_KOUT_PWM1_INIT() GPIO_G_H(GPIO_KOUT_PWM1_BIT); \
- GPIO_G_O(GPIO_KOUT_PWM1_BIT)
- //PWM2 G7
- #define GPIO_KOUT_PWM2_BIT 7
- #define GPIO_KOUT_PWM2_ON() GPIO_G_L(GPIO_KOUT_PWM2_BIT)
- #define GPIO_KOUT_PWM2_OFF() GPIO_G_H(GPIO_KOUT_PWM2_BIT)
- #define GPIO_KOUT_PWM2_INIT() GPIO_G_H(GPIO_KOUT_PWM2_BIT); \
- GPIO_G_O(GPIO_KOUT_PWM2_BIT)
- //PWM3 F2
- #define GPIO_KOUT_PWM3_BIT 2
- #define GPIO_KOUT_PWM3_ON() GPIO_F_L(GPIO_KOUT_PWM3_BIT)
- #define GPIO_KOUT_PWM3_OFF() GPIO_F_H(GPIO_KOUT_PWM3_BIT)
- #define GPIO_KOUT_PWM3_INIT() GPIO_F_H(GPIO_KOUT_PWM3_BIT); \
- GPIO_F_O(GPIO_KOUT_PWM3_BIT)
- //KOUT_EN0 C5
- #define GPIO_KOUT_EN0_BIT 5
- #define GPIO_KOUT_EN0_ON() GPIO_C_H(GPIO_KOUT_EN0_BIT)
- #define GPIO_KOUT_EN0_OFF() GPIO_C_L(GPIO_KOUT_EN0_BIT)
- #define GPIO_KOUT_EN0_INIT() GPIO_C_L(GPIO_KOUT_EN0_BIT); \
- GPIO_C_O(GPIO_KOUT_EN0_BIT)
- //KOUT_EN1 T2IN
- #ifdef __DFTU_V4_HV0102__ // sunxi 20180724 第二版 H7
- #define GPIO_KOUT_EN1_BIT 7
- #define GPIO_KOUT_EN1_ON() GPIO_K_H(GPIO_KOUT_EN1_BIT)
- #define GPIO_KOUT_EN1_OFF() GPIO_K_L(GPIO_KOUT_EN1_BIT)
- #define GPIO_KOUT_EN1_INIT() GPIO_K_L(GPIO_KOUT_EN1_BIT); \
- GPIO_K_O(GPIO_KOUT_EN1_BIT)
- #else // sunxi 20180724 第一版 D1
- #define GPIO_KOUT_EN1_BIT 1
- #define GPIO_KOUT_EN1_ON() GPIO_D_H(GPIO_KOUT_EN1_BIT)
- #define GPIO_KOUT_EN1_OFF() GPIO_D_L(GPIO_KOUT_EN1_BIT)
- #define GPIO_KOUT_EN1_INIT() GPIO_D_L(GPIO_KOUT_EN1_BIT); \
- GPIO_D_O(GPIO_KOUT_EN1_BIT)
- #endif
- //测试管脚
- #if 0
- #define MCF_GPIO_PAR_FBCTL_ALE_MASK (0x3F)
- #define GPIO_TP1_BIT 7
- #define GPIO_TP1_LOW() GPIO_A_L(GPIO_TP1_BIT)
- #define GPIO_TP1_HIGH() GPIO_A_H(GPIO_TP1_BIT)
- #define GPIO_TP1_STATUS() GPIO_A_S(GPIO_TP1_BIT)
- #define GPIO_TP1_INIT() GPIO_A_L(GPIO_TP1_BIT); \
- GPIO_A_O(GPIO_TP1_BIT); \
- do{ MCF_PAD_PAR_FBCTL &= MCF_GPIO_PAR_FBCTL_ALE_MASK;}while(0)
- #define MCF_GPIO_PAR_FBCTL_FBCLK (0x08)
- #define GPIO_TP2_BIT 7
- #define GPIO_TP2_LOW() GPIO_B_L(GPIO_TP2_BIT)
- #define GPIO_TP2_HIGH() GPIO_B_H(GPIO_TP2_BIT)
- #define GPIO_TP2_STATUS() GPIO_B_S(GPIO_TP2_BIT)
- #define GPIO_TP2_INIT() GPIO_B_L(GPIO_TP2_BIT); \
- GPIO_B_O(GPIO_TP2_BIT); \
- do{ MCF_PAD_PAR_FBCTL &= ~MCF_GPIO_PAR_FBCTL_FBCLK;}while(0)
- #define MCF_GPIO_PAR_BE_BE0_MASK (0xFC)
- #define GPIO_TP3_BIT 0
- #define GPIO_TP3_LOW() GPIO_A_L(GPIO_TP3_BIT)
- #define GPIO_TP3_HIGH() GPIO_A_H(GPIO_TP3_BIT)
- #define GPIO_TP3_STATUS() GPIO_A_S(GPIO_TP3_BIT)
- #define GPIO_TP3_INIT() GPIO_A_L(GPIO_TP3_BIT); \
- GPIO_A_O(GPIO_TP3_BIT); \
- do{ MCF_PAD_PAR_BE &= MCF_GPIO_PAR_BE_BE0_MASK;}while(0)
- //目前是NF_WP管脚
- #define MCF_GPIO_PAR_BE_BE1_MASK (0xF3)
- #define GPIO_TP4_BIT 1
- #define GPIO_TP4_LOW() GPIO_A_L(GPIO_TP4_BIT)
- #define GPIO_TP4_HIGH() GPIO_A_H(GPIO_TP4_BIT)
- #define GPIO_TP4_INIT() GPIO_A_L(GPIO_TP4_BIT); \
- GPIO_A_O(GPIO_TP4_BIT); \
- do{ MCF_PAD_PAR_BE &= MCF_GPIO_PAR_BE_BE1_MASK;}while(0)
- #endif
- #if 0 //这个管脚目前做事件捕获,不做普通测试管脚了。
- #define GPIO_TP9_BIT 7
- #define GPIO_TP9_LOW() GPIO_E_L(GPIO_TP9_BIT)
- #define GPIO_TP9_HIGH() GPIO_E_H(GPIO_TP9_BIT)
- #define GPIO_TP9_STATUS() GPIO_E_S(GPIO_TP9_BIT)
- #define GPIO_TP9_INIT() GPIO_E_L(GPIO_TP9_BIT); \
- GPIO_E_O(GPIO_TP9_BIT);
- #endif
- #define MCF_REG08(x) x
- #define MCF_REG16(x) x
- #define MCF_REG32(x) x
- #define CFG_BSP_DEBUG 1
- //linux
- #define PROC_NAME_BSP_VERSION "bspversion" //Linux bsp version file's name
- #define CFG_IOCTL_TYPE 0XF8
- #define CFG_IOCTL_NR_CLOCK 0
- #define CFG_IOCTL_NR_CAN 32
- #endif //_BSPCONFIG_H_
|