Browse Source

DS28EC20_readData<n>B

Juraj Ďuďák 1 year ago
parent
commit
8e9af68840
2 changed files with 32 additions and 3 deletions
  1. 3 0
      Inc/memory_ec20.h
  2. 29 3
      Src/memory_ec20.c

+ 3 - 0
Inc/memory_ec20.h

@@ -36,11 +36,14 @@ uint8_t DS28EC20_writeMem(uint16_t ,uint8_t);
 
 uint32_t DS28EC20_readData4B(uint16_t);
 uint16_t DS28EC20_readData2B(uint16_t address);
+uint8_t DS28EC20_readData1B(uint16_t address);
 
 uint8_t DS28EC20_writeData4B(uint32_t, uint16_t );
 uint8_t DS28EC20_writeData2B(uint16_t data, uint16_t  adr);
+uint8_t DS28EC20_writeData1B(uint8_t data, uint16_t  adr);
 
 uint8_t DS28EC20_getId(uint8_t*);
+uint32_t DS28EC20_getCapacity(void);
 
 //uint8_t DS28EC20_writeData4char(uint8_t *data, uint16_t  adr);
 

+ 29 - 3
Src/memory_ec20.c

@@ -57,16 +57,22 @@ uint8_t DS28EC20_writeMem(uint16_t addr, uint8_t size) {
 
 	owWriteByte(CMD_READ_SCRATCHPAD, OW_STRONG_OFF);    //0xAA
 	uint8_t tempVal = owReadByte();
-	if (tempVal != TA1) return 1;
+	if (tempVal != TA1) {
+		return 1;
+	}
 
 	tempVal = owReadByte();
-	if (tempVal != TA2) return 2;
+	if (tempVal != TA2) {
+		return 2;
+	}
 
 	uint8_t ES = owReadByte();
 
 	for (i = 0 ; i < size; i++) {
 		tempVal = owReadByte();
-		if (tempVal != mem_page.buffer_tx[i]) return i+10;
+		if (tempVal != mem_page.buffer_tx[i]) {
+			return i + 10;
+		}
 	}
 
 	HAL_Delay(10);
@@ -102,6 +108,13 @@ uint16_t DS28EC20_readData2B(uint16_t address) {
     return data16;
 }
 
+uint8_t DS28EC20_readData1B(uint16_t address) {
+    mem_page.buffer_rx[1] = mem_page.buffer_rx[0] = 0;
+    DS28EC20_readMem(address, 1);
+    uint8_t data8 = mem_page.buffer_rx[0];
+    return data8;
+}
+
 
 uint8_t DS28EC20_writeData4B(uint32_t data, uint16_t adr) {
     mem_page.buffer_tx[0] = data>>24;
@@ -117,11 +130,24 @@ uint8_t DS28EC20_writeData2B(uint16_t data, uint16_t adr) {
     return DS28EC20_writeMem(adr,2);
 }
 
+uint8_t DS28EC20_writeData1B(uint8_t data, uint16_t adr) {
+    mem_page.buffer_tx[0] = (data) & 0xFF;
+    return DS28EC20_writeMem(adr,1);
+}
+
 uint8_t DS28EC20_getId(uint8_t* data) {
 	owGetROM(mem_page.ROM);
 	memcpy(data, mem_page.ROM, 8);
 	return 8;
 }
+
+/**
+ * Return capacity in Bytes
+ */
+uint32_t DS28EC20_getCapacity(void) {
+	return 2560;
+}
+
 /*
 uint8_t DS28EC20_writeData4char(uint8_t *data, uint16_t adr) {
     mem_page.buffer_tx[0] = data[0];