first publish

Dependents:   eeprom_test eeprom_test MCP3204_test

Committer:
sashida_h
Date:
Wed Aug 05 10:15:46 2020 +0000
Revision:
1:41cf2e3bb7f3
Parent:
0:8047024a08c2
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sashida_h 0:8047024a08c2 1 #include "24LC1025.h"
sashida_h 1:41cf2e3bb7f3 2
sashida_h 1:41cf2e3bb7f3 3 /*
sashida_h 1:41cf2e3bb7f3 4 ref.http://akizukidenshi.com/download/I-02525_24lc1025.pdf
sashida_h 1:41cf2e3bb7f3 5 Created by sassy,CORE
sashida_h 1:41cf2e3bb7f3 6
sashida_h 1:41cf2e3bb7f3 7 */
sashida_h 0:8047024a08c2 8
sashida_h 1:41cf2e3bb7f3 9 //******************************************************************************
sashida_h 1:41cf2e3bb7f3 10 LC1025::LC1025(PinName sda, PinName scl)
sashida_h 1:41cf2e3bb7f3 11 {
sashida_h 1:41cf2e3bb7f3 12 i2c_ = new I2C(sda, scl);
sashida_h 1:41cf2e3bb7f3 13 i2c_->frequency(400000);
sashida_h 1:41cf2e3bb7f3 14 }
sashida_h 0:8047024a08c2 15
sashida_h 1:41cf2e3bb7f3 16 //******************************************************************************
sashida_h 1:41cf2e3bb7f3 17 LC1025::LC1025(I2C *i2c):i2c_(i2c){}
sashida_h 1:41cf2e3bb7f3 18
sashida_h 1:41cf2e3bb7f3 19 //******************************************************************************
sashida_h 1:41cf2e3bb7f3 20 LC1025::~LC1025()
sashida_h 1:41cf2e3bb7f3 21 {
sashida_h 1:41cf2e3bb7f3 22 delete i2c_;
sashida_h 0:8047024a08c2 23 }
sashida_h 1:41cf2e3bb7f3 24
sashida_h 1:41cf2e3bb7f3 25 void LC1025::writeByte(uint8_t address, uint16_t subAddress, uint8_t data)
sashida_h 0:8047024a08c2 26 {
sashida_h 1:41cf2e3bb7f3 27 char data_write[3];
sashida_h 1:41cf2e3bb7f3 28 data_write[0] = (subAddress >> 8) & 0xff ;
sashida_h 1:41cf2e3bb7f3 29 data_write[1] = (subAddress) & 0xff ;
sashida_h 1:41cf2e3bb7f3 30 data_write[2] = data;
sashida_h 1:41cf2e3bb7f3 31 i2c_->write(address, data_write, 3);
sashida_h 0:8047024a08c2 32 }
sashida_h 0:8047024a08c2 33
sashida_h 1:41cf2e3bb7f3 34 void LC1025::PageWrite(uint8_t address, uint16_t subAddress, char *data, int num)
sashida_h 0:8047024a08c2 35 {
sashida_h 1:41cf2e3bb7f3 36 char data_write[num+2];
sashida_h 1:41cf2e3bb7f3 37 data_write[0] = (subAddress >> 8) & 0xff ;
sashida_h 1:41cf2e3bb7f3 38 data_write[1] = (subAddress) & 0xff ;
sashida_h 1:41cf2e3bb7f3 39 for(int i = 0; i < num; i++){
sashida_h 1:41cf2e3bb7f3 40 data_write[i+2] = data[i];
sashida_h 1:41cf2e3bb7f3 41 }
sashida_h 1:41cf2e3bb7f3 42 i2c_->write(address, data_write, num+2);
sashida_h 1:41cf2e3bb7f3 43 }
sashida_h 1:41cf2e3bb7f3 44
sashida_h 1:41cf2e3bb7f3 45 char LC1025::RandomRead(uint8_t address, uint16_t subAddress)
sashida_h 1:41cf2e3bb7f3 46 {
sashida_h 1:41cf2e3bb7f3 47 char data[1]; // `data` will store the register data
sashida_h 1:41cf2e3bb7f3 48 char data_write[2];
sashida_h 1:41cf2e3bb7f3 49 data_write[0] = (subAddress>>8) & 0xff;
sashida_h 1:41cf2e3bb7f3 50 data_write[1] = subAddress & 0xff;
sashida_h 1:41cf2e3bb7f3 51 i2c_->write(address, data_write, 2, true);
sashida_h 1:41cf2e3bb7f3 52 i2c_->read(address+1, data, 1, true);
sashida_h 1:41cf2e3bb7f3 53 i2c_->stop();
sashida_h 1:41cf2e3bb7f3 54 return data[0];
sashida_h 0:8047024a08c2 55 }
sashida_h 0:8047024a08c2 56
sashida_h 1:41cf2e3bb7f3 57 char LC1025::SequentialRead(uint8_t address, uint16_t subAddress)
sashida_h 0:8047024a08c2 58 {
sashida_h 1:41cf2e3bb7f3 59 char data[1]; // `data` will store the register data
sashida_h 1:41cf2e3bb7f3 60 char data_write[2];
sashida_h 1:41cf2e3bb7f3 61 data_write[0] = (subAddress>>8) & 0xff;
sashida_h 1:41cf2e3bb7f3 62 data_write[1] = subAddress & 0xff;
sashida_h 1:41cf2e3bb7f3 63 i2c_->write(address, data_write, 2, true);
sashida_h 1:41cf2e3bb7f3 64 i2c_->read(address+1, data, 0xffff, true);
sashida_h 1:41cf2e3bb7f3 65 i2c_->stop();
sashida_h 1:41cf2e3bb7f3 66 return data[0];
sashida_h 1:41cf2e3bb7f3 67 }
sashida_h 1:41cf2e3bb7f3 68
sashida_h 1:41cf2e3bb7f3 69 void LC1025::readBytes(uint8_t address, uint8_t subAddress, uint8_t count, uint8_t * dest)
sashida_h 1:41cf2e3bb7f3 70 {
sashida_h 1:41cf2e3bb7f3 71 char data[14];
sashida_h 1:41cf2e3bb7f3 72 char data_write[1];
sashida_h 1:41cf2e3bb7f3 73 data_write[0] = subAddress;
sashida_h 1:41cf2e3bb7f3 74 i2c_->write(address, data_write, 1, true); // no stop
sashida_h 1:41cf2e3bb7f3 75 i2c_->read(address, data, count, 0);
sashida_h 1:41cf2e3bb7f3 76 for(int ii = 0; ii < count; ii++) {
sashida_h 1:41cf2e3bb7f3 77 dest[ii] = data[ii];
sashida_h 1:41cf2e3bb7f3 78 }
sashida_h 1:41cf2e3bb7f3 79 }