PixArt Optical Track Sensor, OTS, library initial release v1.0. Supports PAT9125, PAT9126, PAT9130, PAA5101. Future to support PAT9150.
Fork of Pixart_OTS by
Pixart_ComPort.cpp
00001 /* PixArt Optical Finger Navigation, OFN, sensor driver. 00002 * By PixArt Imaging Inc. 00003 * Primary Engineer: Hill Chen (PixArt USA) 00004 * 00005 * License: Apache-2.0; http://www.apache.org/licenses/LICENSE-2.0 00006 */ 00007 00008 #include "Pixart_ComPort.h" 00009 00010 Pixart_I2cComPort::Pixart_I2cComPort(I2C &i2c, int address): m_i2c(i2c), m_address(address) 00011 { 00012 m_i2c.frequency(400000); 00013 } 00014 00015 void Pixart_I2cComPort::writeRegister(uint8_t addr, uint8_t data) 00016 { 00017 char data_write[2]; 00018 00019 data_write[0] = addr; 00020 data_write[1] = data; 00021 m_i2c.write(m_address, data_write, 2, 0); 00022 } 00023 00024 uint8_t Pixart_I2cComPort::readRegister(uint8_t addr) 00025 { 00026 char data_write[2]; 00027 char data_read[2]; 00028 00029 data_write[0] = addr; 00030 m_i2c.write(m_address, data_write, 1, 0); 00031 m_i2c.read(m_address, data_read, 1, 0); 00032 00033 return data_read[0]; 00034 } 00035 00036 00037 Pixart_SpiComPort::Pixart_SpiComPort(SPI &spi, DigitalOut &cs): m_spi(spi), m_cs(cs) 00038 { 00039 m_spi.format(8, 3); 00040 m_spi.frequency(1000000); 00041 00042 m_cs = 1; 00043 } 00044 00045 void Pixart_SpiComPort::writeRegister(uint8_t addr, uint8_t data) 00046 { 00047 m_cs = 0; 00048 addr = addr | 0x80; 00049 m_spi.write(addr); 00050 m_spi.write(data); 00051 m_cs = 1; 00052 } 00053 00054 uint8_t Pixart_SpiComPort::readRegister(uint8_t addr) 00055 { 00056 m_cs = 0; 00057 addr = addr & 0x7F; 00058 m_spi.write(addr); 00059 //wait_us(1); 00060 uint8_t data_read = m_spi.write(0x00); 00061 m_cs = 1; 00062 00063 return data_read; 00064 }
Generated on Thu Jul 14 2022 20:52:37 by 1.7.2