dm9k.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /****************************************************************************
  2. * Copyright (C), 2009-2010, www.armfly.com 安富莱电子
  3. *
  4. * 文件名: dm9k_uip.c
  5. * 内容简述: Davicom DM9000A uP NIC fast Ethernet driver for uIP.
  6. *
  7. * 文件历史:
  8. * 版本号 日期 作者 说明
  9. * v0.1 2010-01-18 armfly 创建该文件
  10. *
  11. */
  12. #ifndef _DM9K_H_
  13. #define _DM9K_H_
  14. #include "includes.h"
  15. #include <inttypes.h>
  16. #define TCP_PORT 8080
  17. /* DM9000 REGISTER LIST */
  18. #define DM9000_REG_NCR 0x00
  19. #define DM9000_REG_NSR 0x01
  20. #define DM9000_REG_TCR 0x02
  21. #define DM9000_REG_TSR1 0x03
  22. #define DM9000_REG_TSR2 0x04
  23. #define DM9000_REG_RCR 0x05
  24. #define DM9000_REG_RSR 0x06
  25. #define DM9000_REG_ROCR 0x07
  26. #define DM9000_REG_BPTR 0x08
  27. #define DM9000_REG_FCTR 0x09
  28. #define DM9000_REG_FCR 0x0A
  29. #define DM9000_REG_EPCR 0x0B
  30. #define DM9000_REG_EPAR 0x0C
  31. #define DM9000_REG_EPDRL 0x0D
  32. #define DM9000_REG_EPDRH 0x0E
  33. #define DM9000_REG_WAR 0x0F
  34. #define DM9000_REG_PAR 0x10
  35. #define DM9000_REG_MAR 0x16
  36. #define DM9000_REG_GPCR 0x1E
  37. #define DM9000_REG_GPR 0x1F
  38. #define DM9000_REG_VID_L 0x28
  39. #define DM9000_REG_VID_H 0x29
  40. #define DM9000_REG_PID_L 0x2A
  41. #define DM9000_REG_PID_H 0x2B
  42. #define DM9000_REG_CHIPR 0x2C
  43. #define DM9000_REG_TCR2 0x2D
  44. #define DM9000_REG_OTCR 0x2E
  45. #define DM9000_REG_SMCR 0x2F
  46. #define DM9000_REG_ETXCSR 0x30
  47. #define DM9000_REG_TCSCR 0x31
  48. #define DM9000_REG_RCSCSR 0x32
  49. #define DM9000_REG_MRCMDX 0xF0
  50. #define DM9000_REG_MRCMD 0xF2
  51. #define DM9000_REG_MRRL 0xF4
  52. #define DM9000_REG_MRRH 0xF5
  53. #define DM9000_REG_MWCMDX 0xF6
  54. #define DM9000_REG_MWCMD 0xF8
  55. #define DM9000_REG_MWRL 0xFA
  56. #define DM9000_REG_MWRH 0xFB
  57. #define DM9000_REG_TXPLL 0xFC
  58. #define DM9000_REG_TXPLH 0xFD
  59. #define DM9000_REG_ISR 0xFE
  60. #define DM9000_REG_IMR 0xFF
  61. /* 相关宏设置 */
  62. #define DM9000A_ID_OK 0x0A469000
  63. #define DM9000_BYTE_MODE 0x01
  64. #define DM9000_WORD_MODE 0x00
  65. #define DM9000_PHY 0x40
  66. #define DM9000_PKT_RDY 0x01
  67. #define DM9000_PKT_NORDY 0x00
  68. #define DM9000_REG_RESET 0x03
  69. #define DM9000_RX_INTR 0x01 /* 接收中断判断 bit */
  70. #define DM9000_TX_INTR 0x02 /* 传送中断判断 bit */
  71. #define DM9000_OVERFLOW_INTR 0x04 /* 内存溢出中断判断 bit */
  72. #define DM9000_LINK_CHANG 0x20 /* 连接变动中断判断 bit */
  73. #define DM9000_PHY_ON 0x00 /* 设定 PHY 开启 */
  74. #define DM9000_PHY_OFF 0x01 /* 设定 PHY 关闭 */
  75. #define DM9000_RCR_SET 0x31 /* 设定 接收功能 (不收 CRC 及 超长包) */
  76. #define DM9000_TCR_SET 0x01 /* 设定 传送功能 */
  77. #define DM9000_RCR_OFF 0x00 /* 设定 接收功能关关闭设置 */
  78. #define DM9000_BPTR_SET 0x37 /* 设定 Back Pressure 条件设置 */
  79. #define DM9000_FCTR_SET 0x38 /* 设定 Flow Control 条件设置 */
  80. #define DM9000_TCR2_SET 0x80 /* 设置 LED 显示模式 */
  81. #define DM9000_OTCR_SET 0x80 /* 设置 DM9000 工作频率 0x80 = 100Mhz */
  82. #define DM9000_ETXCSR_SET 0x83 /* 设置 Early Tramsmit 条件设置 */
  83. #define DM9000_FCR_SET 0x28 /* 开启 网络流控功能设置 */
  84. #define DM9000_TCSCR_SET 0x07 /* 设定 CHECKSUM 传送运算 设置 */
  85. #define DM9000_RCSCSR_SET 0x03 /* 设定 CHECKSUM 接收检查 设置 */
  86. #define DM9000_IMR_SET 0x81 /* 设定 启用中断使能 条件设置 */
  87. #define DM9000_IMR_OFF 0x80 /* 设定 关闭中断使能 条件设置 */
  88. /* EXPORTED SUBPROGRAM SPECIFICATIONS */
  89. void dm9k_init(void);
  90. void dm9k_send_packet(uint8_t *p_char, uint16_t length);
  91. uint16_t dm9k_receive_packet(uint8_t *_uip_buf);
  92. uint32_t dm9k_ReadID(void);
  93. #endif