memory_ec20.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef __1W_EC20
  2. #define __1W_EC20
  3. #include "one_wire.h"
  4. #define DS28EC20_FAMILY_CODE 0x43
  5. #define CMD_WRITE_SCRATCHPAD 0x0F
  6. #define CMD_READ_SCRATCHPAD 0xAA
  7. #define CMD_COPY_SCRATCHPAD 0x55
  8. #define CMD_READ_MEMORY 0xF0
  9. #define CMD_EXTENDED_READ_MEMORY 0xA5
  10. #define REG_MEMORY_BLOCK_LOCK 0xA1E
  11. #define REG_REGISTER_PAGE_LOCK 0xA1F
  12. #define WRITE_PROTECTION 0x55
  13. #define EPROM_MODE 0xAA
  14. #define PAGE_SIZE 0x20
  15. #define NUM_OF_PAGES 0x50
  16. #define MEM_SIZE (PAGE_SIZE * NUM_OF_PAGES)
  17. typedef struct _onewire_ec20_{
  18. uint8_t buffer_rx[32];
  19. uint8_t buffer_tx[32];
  20. uint8_t real_size;
  21. uint8_t ROM[8];
  22. }OneWire_EC20_typeDef;
  23. typedef struct{
  24. uint8_t (*init)(GPIO_TypeDef*, uint16_t);
  25. void (*read)(uint16_t,uint8_t);
  26. uint8_t (*write)(uint16_t ,uint8_t);
  27. uint32_t (*read_word)(uint16_t);
  28. uint16_t (*read_half_word)(uint16_t);
  29. uint8_t (*write_word)(uint32_t, uint16_t);
  30. uint8_t (*write_half_word)(uint16_t, uint16_t);
  31. }Ec20_MemoryDriver;
  32. Ec20_MemoryDriver *getEc20MemoryDriver();
  33. uint8_t DS28EC20_init(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  34. void DS28EC20_readMem(uint16_t,uint8_t);
  35. uint8_t DS28EC20_writeMem(uint16_t ,uint8_t);
  36. uint32_t DS28EC20_readData4B(uint16_t);
  37. uint16_t DS28EC20_readData2B(uint16_t address);
  38. uint8_t DS28EC20_writeData4B(uint32_t, uint16_t );
  39. uint8_t DS28EC20_writeData2B(uint16_t data, uint16_t adr);
  40. uint8_t DS28EC20_writeData4char(uint8_t *data, uint16_t adr);
  41. #endif