detail : http://www.mcugear.com/
Embed:
(wiki syntax)
Show/hide line numbers
MCUGearBase.cpp
00001 /* MCU Gear Library, only for testing MCUGear without any circuit you connected. 00002 * Copyright (c) 2013, NestEgg Inc., http://www.mcugear.com/ 00003 * 00004 * Permission is hereby granted, free of charge, to any person obtaining a copy 00005 * of this software and associated documentation files (the "Software"), to deal 00006 * in the Software without restriction, including without limitation the rights 00007 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00008 * copies of the Software, and to permit persons to whom the Software is 00009 * furnished to do so, subject to the following conditions: 00010 * 00011 * The above copyright notice and this permission notice shall be included in 00012 * all copies or substantial portions of the Software. 00013 * 00014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00015 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00016 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00017 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00018 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00019 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00020 * THE SOFTWARE. 00021 */ 00022 00023 #include "mbed.h" 00024 #include "MCUGearBase.h" 00025 00026 #ifdef LPC1768_mbed 00027 I2C fpga_i2c(p28, p27); 00028 #endif 00029 00030 #ifdef FS_KL25Z 00031 I2C fpga_i2c(PTE0, PTE1); 00032 #endif 00033 00034 00035 00036 00037 #ifdef DEBUG 00038 Serial fpga_pc(USBTX, USBRX); // tx, rx 00039 #endif 00040 00041 void fpga_write(int dev_adr,unsigned char adr, unsigned char data) { 00042 char cmd[2]; 00043 cmd[0] = adr; 00044 cmd[1] = data; 00045 fpga_i2c.frequency (FPGA_I2C_CLOCK); 00046 fpga_i2c.write(dev_adr, cmd, 2); 00047 //wait(0.01); 00048 00049 #ifdef DEBUG 00050 fpga_pc.printf("fpga write adr:%x data:%x\n", adr,data); 00051 #endif 00052 00053 } 00054 00055 unsigned char fpga_read(int dev_adr,unsigned char adr) { 00056 char cmd[2]; 00057 cmd[0] = adr; 00058 fpga_i2c.write(dev_adr, cmd, 1); 00059 //wait(0.01); 00060 fpga_i2c.read(dev_adr, cmd, 1); 00061 //wait(0.01); 00062 //pc.printf("fpga read adr:%x data:%x\n", adr,cmd[0]); 00063 return cmd[0]; 00064 } 00065 00066 void initBase(void){ 00067 00068 #ifdef DEBUG 00069 fpga_pc.baud(BaudRate); 00070 #endif 00071 00072 // FPGA reg clear 00073 for (int i=0;i<20;i++) 00074 fpga_write(FPGA_I2C_ADR,0x80+i,0); 00075 00076 // read FPGA registers 00077 00078 #ifdef DEBUG 00079 fpga_pc.printf("I2C test\n"); 00080 #endif 00081 fpga_read(FPGA_I2C_ADR,FPGA_SYSINFO_0); 00082 fpga_read(FPGA_I2C_ADR,FPGA_SYSINFO_0+1); 00083 fpga_read(FPGA_I2C_ADR,FPGA_SYSINFO_0+2); 00084 fpga_read(FPGA_I2C_ADR,FPGA_SYSINFO_0+3); 00085 // FPGA enable 00086 fpga_write(FPGA_I2C_ADR,FPGA_ENABLE,1); 00087 00088 } 00089 00090 00091 void I2Cwrite(char addr, char data){ 00092 00093 char cmd[1]; 00094 cmd[0] = data; 00095 fpga_i2c.write(addr, cmd, 1); 00096 //wait(0.01); 00097 00098 } 00099 00100 int detect_module(char addr) { 00101 int pnum=0xff; 00102 //1pin GND 00103 I2Cwrite(addr,0x7f); //0111 1111 00104 //wait(0.1); 00105 pnum =fpga_read(FPGA_I2C_ADR,FPGA_DETECT); 00106 wait(1); 00107 #ifdef DEBUG 00108 fpga_pc.printf("detected. port %d \n",pnum); 00109 #endif 00110 I2Cwrite(addr,0xff); //1111 1111 00111 //wait(0.1); 00112 return pnum; 00113 } 00114 00115 00116 00117
Generated on Sat Jul 16 2022 15:21:02 by 1.7.2