PixArt Optical Track Sensor, OTS, library initial release v1.0. Supports PAT9125, PAT9126, PAT9130, PAA5101. Future to support PAT9150.

Fork of Pixart_OTS by Hill Chen

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Pixart_ComPort.cpp Source File

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 }