Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 // ADBM-A350: Finger navigation chip. 00002 // Version: 1.1 00003 // Latest Revision Date: 18 July 2018 00004 // By PixArt Imaging Inc. 00005 // Primary Engineer: Vincent Yeh (PixArt USA) 00006 00007 // Copyright [2018] [Vincent Yeh] 00008 // Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at: 00009 // http://www.apache.org/licenses/LICENSE-2.0 00010 00011 00012 /* 00013 //======================= 00014 //Revision History 00015 //======================= 00016 Version 1.1 -- 18 July 2018 00017 Added apache license notice. 00018 00019 Version 1.0 -- 14 June 2018 00020 First release. 00021 */ 00022 00023 #include "mbed.h" 00024 #include "registerArrays.h" 00025 //#include "I2CcommFunctions.h" 00026 #include "SPIcommFunctions.h" 00027 //Make sure you only have one of either SPIcommFunctions or I2CcommFunctions enabled. You cannot include both headers. 00028 00029 int main() 00030 { 00031 pc.baud(115200); // Set baud rate to 115200. Remember to sync serial terminal baud rate to the same value. 00032 00033 #ifdef SPImode 00034 IO_sel = 1; // Set IO_select pin to be HIGH for SPI. 00035 spi.format(8,3); // Set SPI to 8 bits with inverted polarity and phase-shifted to second edge. 00036 spi.frequency(100000); // Set frequency for SPI communication. 00037 cs = 1; // Initialize chip select as inactive. 00038 #endif 00039 00040 #ifdef I2Cmode 00041 IO_sel = 0; // Set IO_select pin to be LOW for I2C. 00042 i2c.frequency(400000); // Set frequency for I2C communication. 00043 cs = 1; // These two pins are used to determine the device's slave ID. 00044 MOSI = 1; 00045 #endif 00046 00047 shutdown = 0; 00048 writeRegister(0x3A, 0x5A); //Soft-reset the chip. 00049 00050 pc.printf("Program START\n\r"); 00051 00052 pc.printf("ID Check: %2X\n\r", readRegister(0x00)); //Checks product ID to make sure communication protocol is working properly. 00053 if(readRegister(0x00) != 0x88) 00054 { 00055 pc.printf("Communication protocol error! Terminating program.\n\r"); 00056 return 0; 00057 } 00058 00059 load(initialize, initialize_size); //Load register settings from the "initialize" array (see registerArrays.h) 00060 00061 while(1) 00062 { 00063 //pc.printf("MOTION bit: %2X\n\r", readRegister(0x02)); //Prints EVENT register for debugging. 00064 00065 if(readRegister(0x02) & 0x80) 00066 { 00067 grabData(); 00068 printData(); 00069 } 00070 } 00071 }
Generated on Sun Jul 17 2022 15:53:38 by
1.7.2
ADBM-A350 | Finger-Navigation Optical Sensor