Kim GiJeong
/
cocoa_STM_ver_BIPOLAR
cocoa_STM_ver_BIPOLAR
Embed:
(wiki syntax)
Show/hide line numbers
SPI_EEP_ENC.cpp
00001 #include "mbed.h" 00002 #include "setting.h" 00003 #include "SPI_EEP_ENC.h" 00004 00005 // EEPROM 00006 void spi_eeprom_ready(void){ 00007 int temp1, temp2; 00008 do{ 00009 eeprom_cs=0; 00010 eeprom.write(0x06); //write enable 00011 eeprom_cs=1; 00012 00013 eeprom_cs=0; 00014 temp1 = eeprom.write(0x05); 00015 temp2 = eeprom.write(0x00); 00016 eeprom_cs=1; 00017 temp2=(temp2&(0x03))!= 0x02; 00018 } while(temp2); // before writing or reading 00019 } 00020 00021 void spi_eeprom_write(unsigned short int add, unsigned int data){ 00022 eeprom_cs=0; 00023 eeprom.write(0x02); 00024 eeprom.write(0xff&(add>>8)); 00025 eeprom.write(0xff&add); 00026 eeprom.write(0xff&data); 00027 eeprom.write(0xff&(data>>8)); 00028 eeprom.write(0xff&(data>>16)); 00029 eeprom.write(0xff&(data>>24)); 00030 eeprom_cs=1; 00031 } 00032 00033 unsigned int spi_eeprom_read(unsigned short int add){ 00034 eeprom_cs=0; 00035 eeprom.write(0x03); 00036 eeprom.write(0xff&(add>>8)); 00037 eeprom.write(0xff&add); 00038 int a1 = eeprom.write(0x00); 00039 int a2 = eeprom.write(0x00); 00040 int a3 = eeprom.write(0x00); 00041 int a4 = eeprom.write(0x00); 00042 eeprom_cs=1; 00043 unsigned int final = (a4<<24)+(a3<<16) + (a2<<8) + a1; 00044 return final; 00045 } 00046 00047 00048 // ENCODER 00049 void spi_enc_set_clear(void){ 00050 unsigned int temp; 00051 enc_cs = 0; 00052 temp = enc.write(0b00100000); 00053 enc_cs = 1; 00054 } 00055 00056 void spi_enc_set_init(void){ 00057 unsigned int temp, i, temp1, temp2; 00058 00059 // write MDR0 -> 0b11 -> x4 quadrature count mode 00060 enc_cs = 0; 00061 temp = enc.write(0b10001000); // WR + MDR0 00062 temp = enc.write(0b00000011); // quadratue mode 00063 enc_cs = 1; 00064 00065 // write MDR1 -> 0b10 -> 2-byte counter mode 00066 for(i=0;i<100;i++); 00067 enc_cs = 0; 00068 temp = enc.write(0b10010000); // WR + MDR1 00069 //temp = enc.write(0b00000010); // 2 byte mode 00070 temp = enc.write(0b00000000); // 4 byte mode 00071 enc_cs = 1; 00072 00073 // clear 00074 spi_enc_set_clear(); 00075 } 00076 00077 00078 int spi_enc_read(void){ 00079 //for(t_i=0;t_i<100;t_i++); 00080 unsigned int t_dummy, t_b1, t_b2, t_b3, t_b4, t_i; 00081 enc_cs = 0; 00082 t_dummy = enc.write(0b01100000); // Read Commend 00083 t_b1 = enc.write(0x00); // Dummy data for clock 00084 t_b2 = enc.write(0x00); // Dummy data for clock 00085 t_b3 = enc.write(0x00); // Dummy data for clock 00086 t_b4 = enc.write(0x00); // Dummy data for clock 00087 enc_cs = 1; 00088 00089 return((t_b1<<24) + (t_b2<<16) + (t_b3<<8) + t_b4); 00090 }
Generated on Mon Jul 25 2022 12:50:10 by 1.7.2