test cp2120

Dependencies:   mbed

Committer:
muraguchi
Date:
Thu Apr 09 01:53:14 2015 +0000
Revision:
0:7e56d5ba2990
test cp2120

Who changed what in which revision?

UserRevisionLine numberNew contents of line
muraguchi 0:7e56d5ba2990 1 #include "mbed.h"
muraguchi 0:7e56d5ba2990 2
muraguchi 0:7e56d5ba2990 3 Serial pc(USBTX, USBRX); // tx, rx
muraguchi 0:7e56d5ba2990 4
muraguchi 0:7e56d5ba2990 5
muraguchi 0:7e56d5ba2990 6 SPI spi(p5, p6, p7); // mosi, miso, sclk
muraguchi 0:7e56d5ba2990 7 DigitalOut rst_n(p8); //
muraguchi 0:7e56d5ba2990 8 DigitalOut cs_n(p9);
muraguchi 0:7e56d5ba2990 9
muraguchi 0:7e56d5ba2990 10 // p5 : pin19 MOSI
muraguchi 0:7e56d5ba2990 11 // p6 : pin20 MISO
muraguchi 0:7e56d5ba2990 12 // p7 : pin01 SCLK
muraguchi 0:7e56d5ba2990 13 // p8 : pin04 RESET_N
muraguchi 0:7e56d5ba2990 14
muraguchi 0:7e56d5ba2990 15
muraguchi 0:7e56d5ba2990 16
muraguchi 0:7e56d5ba2990 17
muraguchi 0:7e56d5ba2990 18
muraguchi 0:7e56d5ba2990 19 int read_reg(int addr);
muraguchi 0:7e56d5ba2990 20 void write_reg(int addr,int data);
muraguchi 0:7e56d5ba2990 21
muraguchi 0:7e56d5ba2990 22 int read_reg(int addr) {
muraguchi 0:7e56d5ba2990 23 int retval;
muraguchi 0:7e56d5ba2990 24 cs_n=0;
muraguchi 0:7e56d5ba2990 25 wait_us(4000);
muraguchi 0:7e56d5ba2990 26 spi.write(0x21);
muraguchi 0:7e56d5ba2990 27 wait_us(1000);
muraguchi 0:7e56d5ba2990 28 spi.write(addr & 0xFF);
muraguchi 0:7e56d5ba2990 29 wait_us(1000);
muraguchi 0:7e56d5ba2990 30 retval = spi.write(0);
muraguchi 0:7e56d5ba2990 31 wait_us(1000);
muraguchi 0:7e56d5ba2990 32 retval = spi.write(0);
muraguchi 0:7e56d5ba2990 33 wait_us(4000);
muraguchi 0:7e56d5ba2990 34 cs_n=1;
muraguchi 0:7e56d5ba2990 35 return retval;
muraguchi 0:7e56d5ba2990 36 }
muraguchi 0:7e56d5ba2990 37
muraguchi 0:7e56d5ba2990 38 void write_reg(int addr,int data){
muraguchi 0:7e56d5ba2990 39 cs_n=0;
muraguchi 0:7e56d5ba2990 40 wait_us(4000);
muraguchi 0:7e56d5ba2990 41 spi.write(0x20);
muraguchi 0:7e56d5ba2990 42 wait_us(1000);
muraguchi 0:7e56d5ba2990 43 spi.write(addr & 0xFF);
muraguchi 0:7e56d5ba2990 44 wait_us(1000);
muraguchi 0:7e56d5ba2990 45 spi.write(data);
muraguchi 0:7e56d5ba2990 46 wait_us(4000);
muraguchi 0:7e56d5ba2990 47 cs_n=1;
muraguchi 0:7e56d5ba2990 48 }
muraguchi 0:7e56d5ba2990 49
muraguchi 0:7e56d5ba2990 50 int main() {
muraguchi 0:7e56d5ba2990 51 int rw,addr,data;
muraguchi 0:7e56d5ba2990 52 // 8-bit, SPI mode 2
muraguchi 0:7e56d5ba2990 53 spi.format(8,2);
muraguchi 0:7e56d5ba2990 54 // 10kHz
muraguchi 0:7e56d5ba2990 55 spi.frequency(10000);
muraguchi 0:7e56d5ba2990 56
muraguchi 0:7e56d5ba2990 57 pc.printf("Init device\r\n");
muraguchi 0:7e56d5ba2990 58
muraguchi 0:7e56d5ba2990 59 cs_n = 1;
muraguchi 0:7e56d5ba2990 60 rst_n = 0;
muraguchi 0:7e56d5ba2990 61 wait_ms(10);
muraguchi 0:7e56d5ba2990 62 rst_n = 1;
muraguchi 0:7e56d5ba2990 63
muraguchi 0:7e56d5ba2990 64 while(1) {
muraguchi 0:7e56d5ba2990 65 rw = -1;
muraguchi 0:7e56d5ba2990 66 addr = 0;
muraguchi 0:7e56d5ba2990 67 data = 0;
muraguchi 0:7e56d5ba2990 68 pc.printf("Write and Read Address Data? rw(write=0,read=1) addr(hex) data(hex): \r\n");
muraguchi 0:7e56d5ba2990 69 pc.scanf("%d %x %x",&rw,&addr,&data);
muraguchi 0:7e56d5ba2990 70 // Write
muraguchi 0:7e56d5ba2990 71 cs_n=0;
muraguchi 0:7e56d5ba2990 72 if ( rw == 0 ) {
muraguchi 0:7e56d5ba2990 73 write_reg(addr,data);
muraguchi 0:7e56d5ba2990 74 pc.printf("Wrote %02x @ %02x\r\n",data,addr);
muraguchi 0:7e56d5ba2990 75 pc.printf("Read %02x @ %02x\r\n",read_reg(addr),addr);
muraguchi 0:7e56d5ba2990 76 }
muraguchi 0:7e56d5ba2990 77 else if (rw == 1 ) {
muraguchi 0:7e56d5ba2990 78 pc.printf("Read %02x @ %02x\r\n",read_reg(addr),addr);
muraguchi 0:7e56d5ba2990 79 }
muraguchi 0:7e56d5ba2990 80 else if (rw == 2) {
muraguchi 0:7e56d5ba2990 81 for (int i=0; i<10;i++){
muraguchi 0:7e56d5ba2990 82 pc.printf("Read data %02x @ %02x\r\n",read_reg(i),i);
muraguchi 0:7e56d5ba2990 83 }
muraguchi 0:7e56d5ba2990 84 }
muraguchi 0:7e56d5ba2990 85 else {
muraguchi 0:7e56d5ba2990 86 pc.printf("Unknown command\r\n");
muraguchi 0:7e56d5ba2990 87 }
muraguchi 0:7e56d5ba2990 88 }
muraguchi 0:7e56d5ba2990 89 }