📄 44b0x.h
字号:
/*
*
* Copyright (C) 2005 Hui Yuan Electronic Corp. Ltd.
*
*/
#ifndef __44B0X_H__
#define __44B0X_H__
//Fout = (8 + M_DIV) * Fin / [ (2+P_DIV) * (2^S_DIV) ]
#define PLL_M (64)
#define PLL_P (3)
#define PLL_S (1)
#define EXT_OSC_CLK 10000000
#define MCLK 60000000
#define WRBUFOPT (0x8) //写缓冲使能(Enabel write buffer operation)
#define SYSCFG_0KB (0x0|WRBUFOPT) //迟延无效,数据异常结束有效
#define SYSCFG_4KB (0x2|WRBUFOPT) //迟延无效,数据异常结束有效
#define SYSCFG_8KB (0x6|WRBUFOPT) //迟延无效,数据异常结束有效
//#define DRAM 1 //In case DRAM is used
#define SDRAM 2 //In case SDRAM is used
#define BDRAMTYPE SDRAM //used in power.c,44blib.c
//BUSWIDTH; 16,32
#define BUSWIDTH (16)
#define CACHECFG SYSCFG_8KB
#define _RAM_STARTADDRESS 0x0c000000
//08M字节 SDRAM:0x0c000000-0x0c7fffff
//16M字节 SDRAM:0x0c000000-0x0cffffff
//32M字节 SDRAM:0x0c000000-0x0dffffff
//64M字节 SDRAM:0x0c000000-0x0fffffff
#define HZ 100
#define VERSION 0x100
// 内存布局
// 1.NOR FLASH
#define SYSTEM_VARS 0x8000 // 未用
#define ASCII_FONT 0x9000 // ASCII点阵
#define CHS_FONT 0xA000 // 汉字点阵
#define APPLICATION 0x4A000 // 应用程序
// 2.RAM
#define VIDEORAM 0x0C000000// 显存
#define IRQ_VECTOR 0x0C080000// 中断向量表
#define APP_VARS 0x0C084000// 应用程序起始地址
#define RAM_END 0x0C800000// RAM结束地址
#define DISK_BASE 0x02000000// NAND FLASH起始地址
#define DISK_END 0x03000000
#define KEY_BASE 0x04000000
#define NAND_DAT 0x02000000
#define NAND_ALE 0x02000004
#define NAND_CLE 0x02000002
#define ChangePllValue(mdiv, pdiv, sdiv) \
rPLLCON = ((mdiv)<<12)|((pdiv)<<4)|(sdiv)
/* System */
#define rSYSCFG (*(volatile unsigned *)0x1c00000)
/* Cache */
#define rNCACHBE0 (*(volatile unsigned *)0x1c00004)
#define rNCACHBE1 (*(volatile unsigned *)0x1c00008)
/* Bus control */
#define rSBUSCON (*(volatile unsigned *)0x1c40000)
/* Memory control */
#define rBWSCON (*(volatile unsigned *)0x1c80000)
#define rBANKCON0 (*(volatile unsigned *)0x1c80004)
#define rBANKCON1 (*(volatile unsigned *)0x1c80008)
#define rBANKCON2 (*(volatile unsigned *)0x1c8000c)
#define rBANKCON3 (*(volatile unsigned *)0x1c80010)
#define rBANKCON4 (*(volatile unsigned *)0x1c80014)
#define rBANKCON5 (*(volatile unsigned *)0x1c80018)
#define rBANKCON6 (*(volatile unsigned *)0x1c8001c)
#define rBANKCON7 (*(volatile unsigned *)0x1c80020)
#define rREFRESH (*(volatile unsigned *)0x1c80024)
#define rBANKSIZE (*(volatile unsigned *)0x1c80028)
#define rMRSRB6 (*(volatile unsigned *)0x1c8002c)
#define rMRSRB7 (*(volatile unsigned *)0x1c80030)
/* UART */
#define rULCON0 (*(volatile unsigned *)0x1d00000)
#define rULCON1 (*(volatile unsigned *)0x1d04000)
#define rUCON0 (*(volatile unsigned *)0x1d00004)
#define rUCON1 (*(volatile unsigned *)0x1d04004)
#define rUFCON0 (*(volatile unsigned *)0x1d00008)
#define rUFCON1 (*(volatile unsigned *)0x1d04008)
#define rUMCON0 (*(volatile unsigned *)0x1d0000c)
#define rUMCON1 (*(volatile unsigned *)0x1d0400c)
#define rUTRSTAT0 (*(volatile unsigned *)0x1d00010)
#define rUTRSTAT1 (*(volatile unsigned *)0x1d04010)
#define rUERSTAT0 (*(volatile unsigned *)0x1d00014)
#define rUERSTAT1 (*(volatile unsigned *)0x1d04014)
#define rUFSTAT0 (*(volatile unsigned *)0x1d00018)
#define rUFSTAT1 (*(volatile unsigned *)0x1d04018)
#define rUMSTAT0 (*(volatile unsigned *)0x1d0001c)
#define rUMSTAT1 (*(volatile unsigned *)0x1d0401c)
#define rUBRDIV0 (*(volatile unsigned *)0x1d00028)
#define rUBRDIV1 (*(volatile unsigned *)0x1d04028)
#ifdef __BIG_ENDIAN
#define rUTXH0 (*(volatile unsigned char *)0x1d00023)
#define rUTXH1 (*(volatile unsigned char *)0x1d04023)
#define rURXH0 (*(volatile unsigned char *)0x1d00027)
#define rURXH1 (*(volatile unsigned char *)0x1d04027)
#define WrUTXH0(ch) (*(volatile unsigned char *)(0x1d00023))=(unsigned char)(ch)
#define WrUTXH1(ch) (*(volatile unsigned char *)(0x1d04023))=(unsigned char)(ch)
#define RdURXH0() (*(volatile unsigned char *)(0x1d00027))
#define RdURXH1() (*(volatile unsigned char *)(0x1d04027))
#define UTXH0 (0x1d00020+3) //byte_access address by BDMA
#define UTXH1 (0x1d04020+3)
#define URXH0 (0x1d00024+3)
#define URXH1 (0x1d04024+3)
#else //Little Endian
#define rUTXH0 (*(volatile unsigned char *)0x1d00020)
#define rUTXH1 (*(volatile unsigned char *)0x1d04020)
#define rURXH0 (*(volatile unsigned char *)0x1d00024)
#define rURXH1 (*(volatile unsigned char *)0x1d04024)
#define WrUTXH0(ch) (*(volatile unsigned char *)0x1d00020)=(unsigned char)(ch)
#define WrUTXH1(ch) (*(volatile unsigned char *)0x1d04020)=(unsigned char)(ch)
#define RdURXH0() (*(volatile unsigned char *)0x1d00024)
#define RdURXH1() (*(volatile unsigned char *)0x1d04024)
#define UTXH0 (0x1d00020) //byte_access address by BDMA
#define UTXH1 (0x1d04020)
#define URXH0 (0x1d00024)
#define URXH1 (0x1d04024)
#endif
/* SIO */
#define rSIOCON (*(volatile unsigned *)0x1d14000)
#define rSIODAT (*(volatile unsigned *)0x1d14004)
#define rSBRDR (*(volatile unsigned *)0x1d14008)
#define rIVTCNT (*(volatile unsigned *)0x1d1400c)
#define rDCNTZ (*(volatile unsigned *)0x1d14010)
/* IIS */
#define rIISCON (*(volatile unsigned *)0x1d18000)
#define rIISMOD (*(volatile unsigned *)0x1d18004)
#define rIISPSR (*(volatile unsigned *)0x1d18008)
#define rIISFCON (*(volatile unsigned *)0x1d1800c)
#ifdef __BIG_ENDIAN
#define IISFIF ((volatile unsigned short *)0x1d18012)
#else //Little Endian
#define IISFIF ((volatile unsigned short *)0x1d18010)
#endif
/* I/O PORT */
#define rPCONA (*(volatile unsigned *)0x1d20000)
#define rPDATA (*(volatile unsigned *)0x1d20004)
#define rPCONB (*(volatile unsigned *)0x1d20008)
#define rPDATB (*(volatile unsigned *)0x1d2000c)
#define rPCONC (*(volatile unsigned *)0x1d20010)
#define rPDATC (*(volatile unsigned *)0x1d20014)
#define rPUPC (*(volatile unsigned *)0x1d20018)
#define rPCOND (*(volatile unsigned *)0x1d2001c)
#define rPDATD (*(volatile unsigned *)0x1d20020)
#define rPUPD (*(volatile unsigned *)0x1d20024)
#define rPCONE (*(volatile unsigned *)0x1d20028)
#define rPDATE (*(volatile unsigned *)0x1d2002c)
#define rPUPE (*(volatile unsigned *)0x1d20030)
#define rPCONF (*(volatile unsigned *)0x1d20034)
#define rPDATF (*(volatile unsigned *)0x1d20038)
#define rPUPF (*(volatile unsigned *)0x1d2003c)
#define rPCONG (*(volatile unsigned *)0x1d20040)
#define rPDATG (*(volatile unsigned *)0x1d20044)
#define rPUPG (*(volatile unsigned *)0x1d20048)
#define rSPUCR (*(volatile unsigned *)0x1d2004c)
#define rEXTINT (*(volatile unsigned *)0x1d20050)
#define rEXTINTPND (*(volatile unsigned *)0x1d20054)
/* WATCHDOG */
#define rWTCON (*(volatile unsigned *)0x1d30000)
#define rWTDAT (*(volatile unsigned *)0x1d30004)
#define rWTCNT (*(volatile unsigned *)0x1d30008)
/* ADC */
#define rADCCON (*(volatile unsigned *)0x1d40000)
#define rADCPSR (*(volatile unsigned *)0x1d40004)
#define rADCDAT (*(volatile unsigned *)0x1d40008)
/* Timer */
#define rTCFG0 (*(volatile unsigned *)0x1d50000)
#define rTCFG1 (*(volatile unsigned *)0x1d50004)
#define rTCON (*(volatile unsigned *)0x1d50008)
#define rTCNTB0 (*(volatile unsigned *)0x1d5000c)
#define rTCMPB0 (*(volatile unsigned *)0x1d50010)
#define rTCNTO0 (*(volatile unsigned *)0x1d50014)
#define rTCNTB1 (*(volatile unsigned *)0x1d50018)
#define rTCMPB1 (*(volatile unsigned *)0x1d5001c)
#define rTCNTO1 (*(volatile unsigned *)0x1d50020)
#define rTCNTB2 (*(volatile unsigned *)0x1d50024)
#define rTCMPB2 (*(volatile unsigned *)0x1d50028)
#define rTCNTO2 (*(volatile unsigned *)0x1d5002c)
#define rTCNTB3 (*(volatile unsigned *)0x1d50030)
#define rTCMPB3 (*(volatile unsigned *)0x1d50034)
#define rTCNTO3 (*(volatile unsigned *)0x1d50038)
#define rTCNTB4 (*(volatile unsigned *)0x1d5003c)
#define rTCMPB4 (*(volatile unsigned *)0x1d50040)
#define rTCNTO4 (*(volatile unsigned *)0x1d50044)
#define rTCNTB5 (*(volatile unsigned *)0x1d50048)
#define rTCNTO5 (*(volatile unsigned *)0x1d5004c)
/* IIC */
#define rIICCON (*(volatile unsigned *)0x1d60000)
#define rIICSTAT (*(volatile unsigned *)0x1d60004)
#define rIICADD (*(volatile unsigned *)0x1d60008)
#define rIICDS (*(volatile unsigned *)0x1d6000c)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -