#ifndef __1W_EC20 #define __1W_EC20 #include "one_wire.h" #define DS28EC20_FAMILY_CODE 0x43 #define CMD_WRITE_SCRATCHPAD 0x0F #define CMD_READ_SCRATCHPAD 0xAA #define CMD_COPY_SCRATCHPAD 0x55 #define CMD_READ_MEMORY 0xF0 #define CMD_EXTENDED_READ_MEMORY 0xA5 #define REG_MEMORY_BLOCK_LOCK 0xA1E #define REG_REGISTER_PAGE_LOCK 0xA1F #define WRITE_PROTECTION 0x55 #define EPROM_MODE 0xAA #define PAGE_SIZE 0x20 #define NUM_OF_PAGES 0x50 #define MEM_SIZE (PAGE_SIZE * NUM_OF_PAGES) typedef struct _onewire_ec20_{ uint8_t buffer_rx[4]; uint8_t buffer_tx[4]; uint8_t real_size; uint8_t ROM[8]; }OneWire_EC20_typeDef; typedef struct{ uint8_t (*init)(GPIO_TypeDef*, uint16_t); uint32_t (*read_word)(uint16_t); uint16_t (*read_half_word)(uint16_t); /** * @brief Zapíše 4B hodnotu na adresu * @param uint32_t data dáta * @param uint16_t address adresa v pamati. Povolený rozsah: 0-0x09FF */ uint8_t (*write_word)(uint32_t data, uint16_t address); uint8_t (*write_half_word)(uint16_t, uint16_t); }Ec20_MemoryDriver; Ec20_MemoryDriver *getEc20MemoryDriver(); uint8_t DS28EC20_init(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void DS28EC20_readMem(uint16_t,uint8_t); uint8_t DS28EC20_writeMem(uint16_t ,uint8_t); uint32_t DS28EC20_readData4B(uint16_t); uint16_t DS28EC20_readData2B(uint16_t address); uint8_t DS28EC20_writeData4B(uint32_t, uint16_t ); uint8_t DS28EC20_writeData2B(uint16_t data, uint16_t adr); //uint8_t DS28EC20_writeData4char(uint8_t *data, uint16_t adr); #endif