##// END OF EJS Templates
SD card Library started, SDCARD init and detection OK
jeandet -
r10:75324080a75f default
parent child
Show More
@@ -1,4 +1,4
1 This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) (format=pdflatex 2011.9.8) 24 DEC 2011 03:00
1 This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) (format=pdflatex 2011.9.8) 6 JAN 2012 16:08
2 2 entering extended mode
3 3 %&-line parsing enabled.
4 4 **PortingGuide.tex
1 NO CONTENT: modified file, binary diff hidden
@@ -4,16 +4,16 LIBUC = /opt/libuc2
4 4 include $(LIBUC)/rules/common/rules.mk
5 5
6 6 all:subdir
7 make -C lib
7 8 make -C bsp
8 9 make -C examples
9 make -C lib
10 10 make -C Doc
11 11 @echo Code compiled
12 12
13 13 clean:
14 make clean -C lib
14 15 make clean -C bsp
15 16 make clean -C examples
16 make clean -C lib
17 17 make clean -C Doc
18 18 @echo Code compiled
19 19
1 NO CONTENT: modified file, binary diff hidden
1 NO CONTENT: modified file, binary diff hidden
1 NO CONTENT: modified file, binary diff hidden
@@ -24,6 +24,10
24 24 #include "LPC17xx.h"
25 25 #include <uart.h>
26 26 #include <iic.h>
27 #include <ssp.h>
28 #include <24LC0X.h>
29 #include <blkdevice.h>
30 #include <sdcard.h>
27 31
28 32
29 33 extern uartDev* UART0;
@@ -35,8 +39,18 extern i2cDev* IIC0;
35 39 extern i2cDev* IIC1;
36 40 extern i2cDev* IIC2;
37 41
42 extern sspDev* SSP0;
43 extern sspDev* SSP1;
44
45 extern sdcardDev SDCARD0;
46 extern blkdevice BLKDEVSDCARD0;
47
48 extern eeprom24lc0xDev eeprom0;
49
38 50 extern float VREF0;
39 51
52 extern unsigned int currentCpuFreq;
53
40 54 #define pll0useInternal 0
41 55 #define pll0useMainOsc 1
42 56 #define pll0useRTC 2
@@ -72,9 +86,22 extern int bsp_init();
72 86 extern void bsp_GPIO_init();
73 87 extern void bsp_uart_init();
74 88 extern void bsp_iic_init();
89 extern void bsp_ssp_init();
90 extern void bsp_SD_init();
75 91 extern void consoleputc(char);
76 92 extern char consolegetc();
77 93
94 /* VS1053 */
95 extern void clearXCS();
96 extern void setXCS();
97 extern int vs10XXDREQ();
98
99 /* SD CARD */
100 void bsppowersdcard(char onoff);
101 char bspsdcardpresent();
102 void bspsdcardselect(char YESNO);
103 char bspsdcardwriteprotected();
104
78 105 #endif
79 106
80 107
@@ -86,3 +113,12 extern char consolegetc();
86 113
87 114
88 115
116
117
118
119
120
121
122
123
124
@@ -9,8 +9,8 OBJECTFILES = $(LIBSOURCES:.c=.o)
9 9 ARCH = lpc17XX-arm-noabi-gcc
10 10 ARCHFOLDER = $(LIBUC)/rules/lpc17XX-arm-noabi-gcc
11 11 TARGET=libbsp
12 LIBUC_INCLUDES=$(LIBUC_INC_DIR_UART_CMD) $(LIBUC_INC_DIR_IIC_CMD) $(LIBUC_INC_DIR_CORE_CMD)
13 LIBUC_LIBRARIES=$(LIBUC_LIBS_DIR_UART_CMD) $(LIBUC_LIBS_UART) $(LIBUC_LIBS_DIR_IIC_CMD) $(LIBUC_LIBS_IIC) $(LIBUC_LIBS_DIR_CORE_CMD) $(LIBUC_LIBS_CORE)
12 LIBUC_INCLUDES=$(LIBUC_INC_DIR_SDCARD_CMD) $(LIBUC_INC_DIR_BLKDEVICE_CMD) $(LIBUC_INC_DIR_UART_CMD) $(LIBUC_INC_DIR_SSP_CMD) $(LIBUC_INC_DIR_24LC0X_CMD) $(LIBUC_INC_DIR_IIC_CMD) $(LIBUC_INC_DIR_CORE_CMD) $(LIBUC_INC_DIR_UCSTRINGS_CMD)
13 LIBUC_LIBRARIES=$(LIBUC_LIBS_DIR_SDCARD_CMD) $(LIBUC_LIBS_SDCARD) $(LIBUC_LIBS_DIR_BLKDEVICE_CMD) $(LIBUC_LIBS_BLKDEVICE) $(LIBUC_LIBS_DIR_UART_CMD) $(LIBUC_LIBS_UART) $(LIBUC_LIBS_DIR_SSP_CMD) $(LIBUC_LIBS_SSP) $(LIBUC_LIBS_DIR_24LC0X_CMD) $(LIBUC_LIBS_24LC0X) $(LIBUC_LIBS_DIR_IIC_CMD) $(LIBUC_LIBS_IIC) $(LIBUC_LIBS_DIR_CORE_CMD) $(LIBUC_LIBS_CORE) $(LIBUC_LIBS_DIR_UCSTRINGS_CMD) $(LIBUC_LIBS_UCSTRINGS)
14 14 TARGETINSTALLPATH=$(LIBUC_BSP_BIN_DIR)/LandTiger
15 15 HEADERSINSTALLPATH=$(LIBUC_BSP_INC_DIR)/LandTiger
16 16 BSP=generic
@@ -37,6 +37,14 i2cDev* IIC0=(i2cDev*)0;
37 37 i2cDev* IIC1=(i2cDev*)0;
38 38 i2cDev* IIC2=(i2cDev*)0;
39 39
40 sspDev* SSP0=(sspDev*)0;
41 sspDev* SSP1=(sspDev*)0;
42
43 sdcardDev SDCARD0;
44 blkdevice BLKDEVSDCARD0;
45
46 eeprom24lc0xDev eeprom0;
47
40 48 int bsp_init()
41 49 {
42 50 bsp_GPIO_init();
@@ -46,6 +54,8 int bsp_init()
46 54 currentCpuFreq=coregetCpuFreq();
47 55 bsp_uart_init();
48 56 bsp_iic_init();
57 bsp_ssp_init();
58 bsp_SD_init();
49 59 return 0;
50 60 }
51 61
@@ -74,6 +84,24 void bsp_uart_init()
74 84 uartsetup(UART2,38400,8,1,uartNoParity);
75 85 }
76 86
87 void bsp_ssp_init()
88 {
89 SSP0 = sspopen(0); // power up SSP0
90 ssppowerup(SSP0);
91 sspsetpclkfactor(SSP0,1);
92 sspsetup(SSP0,8,FFSPI|CLKINHLOW|CKfirstEdge,loopbackOFF|MASTERMODE, 350000);
93 enableSSP(SSP0);
94 LPC_PINCON->PINSEL3 |= (3<<14); //MISO0 on P1.23
95 LPC_PINCON->PINSEL3 |= (3<<16); //MOSI0 on P1.24
96 LPC_PINCON->PINSEL3 |= (3<<8); //SCK0 on P1.20
97 LPC_GPIO1->FIODIR |= (1<<24) + (1<<20);
98 LPC_PINCON->PINMODE3 &= ~(1<<14);
99 LPC_PINCON->PINMODE3 &= ~(1<<15);
100 //LPC_PINCON->PINSEL3 |= (3<<10); //SSEL0 on P1.21 disable for SDCARD -> need to send dummy clock
101
102 }
103
104
77 105 void bsp_iic_init()
78 106 {
79 107 LPC_SC->PCONP |= ( 1 << 7 ); // power up IIC0
@@ -83,6 +111,19 void bsp_iic_init()
83 111 LPC_PINCON->PINSEL1 &= ~(1<<25);
84 112 IIC0 = i2copen(0);
85 113 i2csetdatarate(IIC0,100000);
114 eeprom24lc0xopen(&eeprom0,IIC0,0,2048);
115 }
116
117 void bsp_SD_init()
118 {
119 LPC_GPIO1->FIODIR |=1<<21; //SD chip select on P1.21
120 LPC_GPIO1->FIOSET = 1<<21; //unselect SD card
121 LPC_GPIO3->FIODIR |=1<<26;
122 LPC_GPIO3->FIODIR &= ~(1<<25);
123 LPC_GPIO3->FIOCLR |=1<<26;
124 sdcardmake(&SDCARD0,SSP0,&sspgetnc,&sspputnc,&sspsetdatarate);
125 sdcardmakeblkdev(&BLKDEVSDCARD0,&SDCARD0,&bspsdcardselect,&bsppowersdcard,&bspsdcardpresent,&bspsdcardwriteprotected);
126 //BLKDEVSDCARD0.initialize(&BLKDEVSDCARD0,0);
86 127 }
87 128
88 129 void consoleputc(char c)
@@ -98,3 +139,36 char consolegetc()
98 139
99 140
100 141
142 void vs10XXclearXCS(){}
143 void vs10XXsetXCS(){}
144 int vs10XXDREQ()
145 {
146 return 1;
147 }
148
149
150 void bsppowersdcard(char onoff) //always ON
151 {
152
153 }
154
155 char bspsdcardpresent()
156 {
157 return (((LPC_GPIO3->FIOPIN >> 25) & 1) ^1);
158 }
159
160 char bspsdcardwriteprotected()
161 {
162 return 0;
163 }
164
165 void bspsdcardselect(char YESNO)
166 {
167
168 LPC_GPIO1->FIOPIN = ((YESNO & 1)^1)<<21;
169 }
170
171
172
173
174
@@ -3,6 +3,11 bsp.o: bsp.c bsp.h /opt/libuc2/rules/lpc
3 3 /opt/libuc2/rules/lpc17XX-arm-noabi-gcc/system_LPC17xx.h \
4 4 /opt/libuc2/lib/includes/lpc17XX/UART/uart.h \
5 5 /opt/libuc2/lib/includes/lpc17XX/IIC/iic.h \
6 /opt/libuc2/lib/includes/lpc17XX/SSP/ssp.h \
7 /opt/libuc2/lib/includes/lpc17XX/24LCXX/24LC0X/24LC0X.h \
8 /opt/libuc2/lib/includes/lpc17XX/BLKDEVICE/blkdevice.h \
9 /opt/libuc2/lib/includes/lpc17XX/SDCARD/sdcard.h \
10 /opt/libuc2/lib/includes/lpc17XX/STRINGS/lpc17XX-arm-noabi-gcc/libucstrings.h \
6 11 /opt/libuc2/lib/includes/lpc17XX/CORE/core.h
7 12
8 13 bsp.h:
@@ -17,4 +22,14 bsp.h:
17 22
18 23 /opt/libuc2/lib/includes/lpc17XX/IIC/iic.h:
19 24
25 /opt/libuc2/lib/includes/lpc17XX/SSP/ssp.h:
26
27 /opt/libuc2/lib/includes/lpc17XX/24LCXX/24LC0X/24LC0X.h:
28
29 /opt/libuc2/lib/includes/lpc17XX/BLKDEVICE/blkdevice.h:
30
31 /opt/libuc2/lib/includes/lpc17XX/SDCARD/sdcard.h:
32
33 /opt/libuc2/lib/includes/lpc17XX/STRINGS/lpc17XX-arm-noabi-gcc/libucstrings.h:
34
20 35 /opt/libuc2/lib/includes/lpc17XX/CORE/core.h:
@@ -24,6 +24,10
24 24 #include "LPC17xx.h"
25 25 #include <uart.h>
26 26 #include <iic.h>
27 #include <ssp.h>
28 #include <24LC0X.h>
29 #include <blkdevice.h>
30 #include <sdcard.h>
27 31
28 32
29 33 extern uartDev* UART0;
@@ -35,8 +39,18 extern i2cDev* IIC0;
35 39 extern i2cDev* IIC1;
36 40 extern i2cDev* IIC2;
37 41
42 extern sspDev* SSP0;
43 extern sspDev* SSP1;
44
45 extern sdcardDev SDCARD0;
46 extern blkdevice BLKDEVSDCARD0;
47
48 extern eeprom24lc0xDev eeprom0;
49
38 50 extern float VREF0;
39 51
52 extern unsigned int currentCpuFreq;
53
40 54 #define pll0useInternal 0
41 55 #define pll0useMainOsc 1
42 56 #define pll0useRTC 2
@@ -72,9 +86,22 extern int bsp_init();
72 86 extern void bsp_GPIO_init();
73 87 extern void bsp_uart_init();
74 88 extern void bsp_iic_init();
89 extern void bsp_ssp_init();
90 extern void bsp_SD_init();
75 91 extern void consoleputc(char);
76 92 extern char consolegetc();
77 93
94 /* VS1053 */
95 extern void clearXCS();
96 extern void setXCS();
97 extern int vs10XXDREQ();
98
99 /* SD CARD */
100 void bsppowersdcard(char onoff);
101 char bspsdcardpresent();
102 void bspsdcardselect(char YESNO);
103 char bspsdcardwriteprotected();
104
78 105 #endif
79 106
80 107
@@ -86,3 +113,12 extern char consolegetc();
86 113
87 114
88 115
116
117
118
119
120
121
122
123
124
@@ -4,7 +4,7 TARGET = libbsp
4 4 TARGETINSTALLPATH = $(LIBUC_BSP_BIN_DIR)/LandTiger
5 5 HEADERSINSTALLPATH = $(LIBUC_BSP_INC_DIR)/LandTiger
6 6
7 LIBS += UART IIC CORE
7 LIBS += SDCARD BLKDEVICE UART SSP 24LC0X IIC CORE UCSTRINGS
8 8
9 9 SOURCES += bsp.c
10 10
@@ -1,4 +1,4
1 1 TEMPLATE = dir
2 2 SUBDIRS += generic \
3 3 LandTiger \
4 mbed
4 mbed
@@ -4,16 +4,14 LIBUC = /opt/libuc2
4 4 include $(LIBUC)/rules/common/rules.mk
5 5
6 6 all:subdir
7 make -C lpc1768_led_blink
8 make -C lpc1768_led_blink_Clk_api
9 make -C lpc1768_uart
10 make -C lpc1768_uart_LandTiger
7 make -C lpc17XX
8 make -C SDCARD
9 make -C SDCARD2
11 10 @echo Code compiled
12 11
13 12 clean:
14 make clean -C lpc1768_led_blink
15 make clean -C lpc1768_led_blink_Clk_api
16 make clean -C lpc1768_uart
17 make clean -C lpc1768_uart_LandTiger
13 make clean -C lpc17XX
14 make clean -C SDCARD
15 make clean -C SDCARD2
18 16 @echo Code compiled
19 17
@@ -1,6 +1,4
1 1 TEMPLATE = dir
2 SUBDIRS += lpc1768_led_blink\
3 lpc1768_led_blink_Clk_api \
4 lpc1768_uart \
5 lpc1768_uart_LandTiger
6
2 SUBDIRS += lpc17XX \
3 SDCARD \
4 SDCARD2
1 NO CONTENT: modified file, binary diff hidden
1 NO CONTENT: modified file, binary diff hidden
1 NO CONTENT: modified file, binary diff hidden
@@ -57,7 +57,7 extern void i2csetup(i2cDev* dev,int clk
57 57 extern unsigned char i2cgetpclkfactor(i2cDev* dev);
58 58 extern void i2csetpclkfactor(i2cDev* dev,unsigned char pclkfactor);
59 59 extern void i2csetdatarate(i2cDev* dev,unsigned int dataRate);
60
60 extern int i2cgetdatarate(i2cDev* dev);
61 61 #endif
62 62
63 63
@@ -26,3 +26,4 void clearstr(char* a);
26 26 void int2hex(unsigned long a,char*b);
27 27 int libucprintf(const char*,...);
28 28 int libucscanf(const char*,...);
29 void libucprintchartable(char* table,int size,const char* format,const char* separator);
@@ -4,10 +4,14 LIBUC = /opt/libuc2
4 4 include $(LIBUC)/rules/common/rules.mk
5 5
6 6 all:subdir
7 make -C lpc21XX
7 8 make -C lpc17XX
9 make -C common
8 10 @echo Code compiled
9 11
10 12 clean:
13 make clean -C lpc21XX
11 14 make clean -C lpc17XX
15 make clean -C common
12 16 @echo Code compiled
13 17
@@ -2,18 +2,6
2 2 PROJECTDIR = `pwd`
3 3 LIBUC = /opt/libuc2
4 4
5 HEADERSINSTALLPATH = $(LIBUC_INC_DIR)/STRINGS
6 HEADERS += libucstrings.h
7 LIBSOURCES += libucstrings.c
8 OBJECTFILES = $(LIBSOURCES:.c=.o)
9 ARCH = $(LIBUC)/rules/lpc17XX-arm-noabi-gcc
10 TARGET=libucstrings
11 LIBUC_INCLUDES=
12 LIBUC_LIBRARIES=
13 TARGETINSTALLPATH=$(LIBUC_LIBS_DIR)/STRINGS
14 HEADERSINSTALLPATH=$(LIBUC_INC_DIR)/STRINGS
15 BSP=generic
16 include $(ARCH)/rules.mk
17
18 all:lib
19 @echo Code compiled
5 all:
6 make -f lpc17XX.mk
7 make -f lpc21XX.mk
@@ -306,6 +306,15 int libucscanf(const char* format,...)
306 306
307 307
308 308
309 void libucprintchartable(char* table,int size,const char* format,const char* separator)
310 {
311 int i =0;
312 for(i=0;i<size;i++)
313 {
314 libucprintf(format,table[i]);
315 libucprintf(separator);
316 }
317 }
309 318
310 319
311 320
@@ -315,4 +324,3 int libucscanf(const char* format,...)
315 324
316 325
317 326
318
@@ -26,3 +26,4 void clearstr(char* a);
26 26 void int2hex(unsigned long a,char*b);
27 27 int libucprintf(const char*,...);
28 28 int libucscanf(const char*,...);
29 void libucprintchartable(char* table,int size,const char* format,const char* separator);
@@ -1,12 +1,26
1 1 TEMPLATE = lib
2 ARCH = lpc17XX-arm-noabi-gcc
3 TARGET = libucstrings
4 TARGETINSTALLPATH = $(LIBUC_LIBS_DIR_UCSTRINGS)
5 HEADERSINSTALLPATH = $(LIBUC_INC_DIR_UCSTRINGS)
2 lpc17XX.ARCH = lpc17XX-arm-noabi-gcc
3 lpc17XX.TARGET = libucstrings
4 lpc17XX.TARGETINSTALLPATH = $(LIBUC_LIBS_DIR_UCSTRINGS)
5 lpc17XX.HEADERSINSTALLPATH = $(LIBUC_INC_DIR_UCSTRINGS)
6 6
7 LIBS +=
7 lpc17XX.LIBS +=
8 8
9 SOURCES += libucstrings.c
9 lpc17XX.SOURCES += libucstrings.c
10 10
11 11
12 HEADERS += libucstrings.h
12 lpc17XX.HEADERS += libucstrings.h
13
14
15
16 lpc21XX.ARCH = lpc21XX-arm-noabi-gcc
17 lpc21XX.TARGET = libucstrings
18 lpc21XX.TARGETINSTALLPATH = $(LIBUC_LIBS_DIR_UCSTRINGS)
19 lpc21XX.HEADERSINSTALLPATH = $(LIBUC_INC_DIR_UCSTRINGS)
20
21 lpc21XX.LIBS +=
22
23 lpc21XX.SOURCES += libucstrings.c
24
25
26 lpc21XX.HEADERS += libucstrings.h
@@ -1,5 +1,6
1 1 TEMPLATE = dir
2 SUBDIRS += lpc17XX \
3 lpc21XX \
4 LEON3
2 SUBDIRS += lpc21XX \
3 lpc17XX \
4 LEON3 \
5 common
5 6
@@ -2,7 +2,7
2 2 PROJECTDIR = `pwd`
3 3 LIBUC = /opt/libuc2
4 4
5 HEADERSINSTALLPATH = $(LIBUC_INC_DIR)/IIC
5 HEADERSINSTALLPATH = $(LIBUC_INC_DIR_IIC)
6 6 HEADERS += iic.h
7 7 LIBSOURCES += iic.c
8 8 OBJECTFILES = $(LIBSOURCES:.c=.o)
@@ -11,8 +11,8 ARCHFOLDER = $(LIBUC)/rules/lpc17XX-arm-
11 11 TARGET=libiic
12 12 LIBUC_INCLUDES=$(LIBUC_INC_DIR_CORE_CMD)
13 13 LIBUC_LIBRARIES=$(LIBUC_LIBS_DIR_CORE_CMD) $(LIBUC_LIBS_CORE)
14 TARGETINSTALLPATH=$(LIBUC_LIBS_DIR)/IIC
15 HEADERSINSTALLPATH=$(LIBUC_INC_DIR)/IIC
14 TARGETINSTALLPATH=$(LIBUC_LIBS_DIR_IIC)
15 HEADERSINSTALLPATH=$(LIBUC_INC_DIR_IIC)
16 16 BSP=generic
17 17 include $(ARCHFOLDER)/rules.mk
18 18
@@ -22,13 +22,13
22 22 #include "iic.h"
23 23 #include "core.h"
24 24
25 #define iicputdata(iicdev,W,IICONSET,IICONCLR) (iicdev)->I2DAT = (W);\
25 #define iicputdata(iicdev,W,IICONSET,IICONCLR) {(iicdev)->I2DAT = (W);\
26 26 (iicdev)->I2CONSET = (IICONSET);\
27 (iicdev)->I2CONCLR = (IICONCLR);
27 (iicdev)->I2CONCLR = (IICONCLR);}
28 28
29 #define iicgetdata(iicdev,W,IICONSET,IICONCLR) (W) = (iicdev)->I2DAT;\
29 #define iicgetdata(iicdev,W,IICONSET,IICONCLR) {(W) = (iicdev)->I2DAT;\
30 30 (iicdev)->I2CONSET = (IICONSET);\
31 (iicdev)->I2CONCLR = (IICONCLR);
31 (iicdev)->I2CONCLR = (IICONCLR);}
32 32
33 33
34 34
@@ -38,7 +38,7 i2ctrl i2cwrite2(i2cDev* dev,char addres
38 38 dev->I2CONCLR = 0x28;
39 39 iicdat = (address<<1) & 0xFE;
40 40 int count = (*datcnt) + 2;
41 *datcnt = 0;
41 (*datcnt) = 0;
42 42 while(dev->I2STAT != 0xF8); //waiting for device to be ready /!\ should add timeout
43 43 dev->I2CONSET = (1<<5); //initiate transfert
44 44 while(count>0)
@@ -83,12 +83,15 i2ctrl i2cwrite2(i2cDev* dev,char addres
83 83 }
84 84 break;
85 85 case 0x20:
86 return i2noack;
86 87 count = 0;
87 88 break;
88 89 case 0x30:
90 return i2noack;
89 91 count = 0;
90 92 break;
91 93 case 0x38:
94 return i2arbloss;
92 95 count = 0;
93 96 break;
94 97 default:
@@ -164,15 +167,16 i2ctrl i2cread(i2cDev* dev,char address,
164 167 char iicdat=0;
165 168 dev->I2CONCLR = 0x28;
166 169 iicdat = (address<<1) + 1;
167 int count = (*cnt) + 1;
170 unsigned int count = (*cnt);
168 171 *cnt = 0;
169 172 while(dev->I2STAT != 0xF8); //waiting for device to be ready /!\ should add timeout
170 173 dev->I2CONSET = (1<<5); //initiate transfert
171 while(count>0)
174 while(count!=0)
172 175 {
173 176 while((dev->I2CONSET & 0x08)!=0x08);
174 177 switch(dev->I2STAT)
175 178 {
179 while((dev->I2CONSET & (1<<3))!=(1<<3));
176 180 case 0x08:
177 181 iicputdata(dev,iicdat,(1<<2),0x28);
178 182 break;
@@ -180,29 +184,37 i2ctrl i2cread(i2cDev* dev,char address,
180 184 iicputdata(dev,iicdat,(1<<2),0x28);
181 185 break;
182 186 case 0x40:
183 dev->I2CONSET = (1<<2);
184 dev->I2CONCLR = (1<<3);
185 count--;
187 if((count!=1)) dev->I2CONSET = (1<<2);
188 else dev->I2CONCLR = (1<<2);
189 dev->I2CONCLR = 1<<3;
186 190 break;
187 191 case 0x50:
188 iicgetdata(dev,iicdat,(1<<2),(1<<3));
192 if((count==2)) iicgetdata(dev,iicdat,(0),(0x0c))
193 else iicgetdata(dev,iicdat,(4),(8))
189 194 count--;
190 195 *cnt = (*cnt) + 1;
191 *data++ = iicdat;
196 *data = iicdat;
197 data++;
192 198 break;
193 199 case 0x48:
194 return i2noack;
200 dev->I2CONSET = 0x14;
201 dev->I2CONCLR = 8;
202 return i2noerr;
195 203 break;
196 204 case 0x58:
197 count = 0;
198 return i2noack;
205 iicgetdata(dev,iicdat,(0x14),(8));
206 count--;
207 *cnt = (*cnt) + 1;
208 *data = iicdat;
209 data++;
210 return i2noerr;
199 211 break;
200 212 default:
201 213 break;
202 214 }
203 215
204 216 }
205 dev->I2CONSET = (1<<4) + (1<<2);
217 dev->I2CONSET = (1<<4); dev->I2CONCLR =(1<<2);
206 218 dev->I2CONCLR = 1<<3;
207 219 return i2noerr;
208 220 }
@@ -312,8 +324,28 void i2csetdatarate(i2cDev* dev,unsigned
312 324 i2csetup(dev,i2csclkl,i2csclkl);
313 325 }
314 326
327 int i2cgetdatarate(i2cDev* dev)
328 {
329 unsigned int dataRate=0;
330 unsigned int pclk = 0;
331 unsigned int cpuclk=0;
332 unsigned int i2csclkl=0;
333 if(dev==0)return;
334 cpuclk = coregetCpuFreq();
335 pclk = cpuclk / i2cgetpclkfactor(dev);
336 dataRate = pclk /( dev->I2SCLH + dev->I2SCLL);
337 return dataRate;
338 }
315 339
316 340
317 341
318 342
319 343
344
345
346
347
348
349
350
351
@@ -57,7 +57,7 extern void i2csetup(i2cDev* dev,int clk
57 57 extern unsigned char i2cgetpclkfactor(i2cDev* dev);
58 58 extern void i2csetpclkfactor(i2cDev* dev,unsigned char pclkfactor);
59 59 extern void i2csetdatarate(i2cDev* dev,unsigned int dataRate);
60
60 extern int i2cgetdatarate(i2cDev* dev);
61 61 #endif
62 62
63 63
@@ -1,8 +1,8
1 1 TEMPLATE = lib
2 2 ARCH = lpc17XX-arm-noabi-gcc
3 3 TARGET = libiic
4 TARGETINSTALLPATH = $(LIBUC_LIBS_DIR)/IIC
5 HEADERSINSTALLPATH = $(LIBUC_INC_DIR)/IIC
4 TARGETINSTALLPATH = $(LIBUC_LIBS_DIR_IIC)
5 HEADERSINSTALLPATH = $(LIBUC_INC_DIR_IIC)
6 6
7 7 LIBS += CORE
8 8
@@ -4,16 +4,16 LIBUC = /opt/libuc2
4 4 include $(LIBUC)/rules/common/rules.mk
5 5
6 6 all:subdir
7 make -C CORE
7 8 make -C UART
8 9 make -C IIC
9 make -C CORE
10 make -C STRINGS
10 make -C SSP
11 11 @echo Code compiled
12 12
13 13 clean:
14 make clean -C CORE
14 15 make clean -C UART
15 16 make clean -C IIC
16 make clean -C CORE
17 make clean -C STRINGS
17 make clean -C SSP
18 18 @echo Code compiled
19 19
@@ -1,9 +1,10
1 1 TEMPLATE = dir
2 SUBDIRS += UART\
2 SUBDIRS += CORE \
3 UART\
3 4 SPI \
4 5 ADC \
5 6 IIC \
6 CORE \
7 STRINGS
7 SSP
8
8 9
9 10
@@ -1,6 +1,6
1 1 TEMPLATE = dir
2 SUBDIRS += bsp\
2 SUBDIRS += lib \
3 bsp\
3 4 examples \
4 lib \
5 5 Doc
6 6
@@ -1,6 +1,6
1 1 TEMPLATE = dir
2 SUBDIRS += bsp\
2 SUBDIRS += lib \
3 bsp\
3 4 examples \
4 lib \
5 5 Doc
6 6
@@ -68,44 +68,72 LIBUC_CXXFLAGS_STATIC_LIB = -fPIC
68 68 LIBUC_CXXFLAGS_SOFT_FPU = -msoft-float
69 69 LIBUC_CXXFLAGS_HARD_FPU =
70 70
71 #---------------------------------------------------------------------------------
72 # LIBRARY DEFINITIONS
73 #---------------------------------------------------------------------------------
74
71 75 LIBUC_LIBS =
72 76 LIBUC_LIBS_CORE = -static -lcore
73 77 LIBUC_LIBS_UCSTRINGS = -static -lucstrings
74 78 LIBUC_LIBS_UART = -static -luart
75 79 LIBUC_LIBS_SPI = -static -lspi
80 LIBUC_LIBS_SSP = -static -lssp
76 81 LIBUC_LIBS_IIC = -static -liic
77 82 LIBUC_LIBS_ADC = -static -ladc
83 LIBUC_LIBS_24LC0X = -static -l24lc0X
84 LIBUC_LIBS_SDCARD = -static -lsdcard
85 LIBUC_LIBS_BLKDEVICE = -static -lblkdevice
86 LIBUC_LIBS_VS10XX = -static -lvs10XX
78 87
79 88 LIBUC_LIBS_DIR = $(LIBUC)/lib/bin/lpc17XX
80 89 LIBUC_LIBS_DIR_CORE = $(LIBUC_LIBS_DIR)/CORE
81 90 LIBUC_LIBS_DIR_UCSTRINGS = $(LIBUC_LIBS_DIR)/STRINGS/$(ARCH)
82 91 LIBUC_LIBS_DIR_UART = $(LIBUC_LIBS_DIR)/UART
83 92 LIBUC_LIBS_DIR_SPI = $(LIBUC_LIBS_DIR)/SPI
93 LIBUC_LIBS_DIR_SSP = $(LIBUC_LIBS_DIR)/SSP
84 94 LIBUC_LIBS_DIR_IIC = $(LIBUC_LIBS_DIR)/IIC
85 95 LIBUC_LIBS_DIR_ADC = $(LIBUC_LIBS_DIR)/ADC
96 LIBUC_LIBS_DIR_24LC0X = $(LIBUC_LIBS_DIR)/24LCXX/24LC0X
97 LIBUC_LIBS_DIR_SDCARD = $(LIBUC_LIBS_DIR)/SDCARD
98 LIBUC_LIBS_DIR_VS10XX = $(LIBUC_LIBS_DIR)/VS10XX
99 LIBUC_LIBS_DIR_BLKDEVICE = $(LIBUC_LIBS_DIR)/BLKDEVICE
86 100
87 101 LIBUC_LIBS_DIR_CORE_CMD = -L $(LIBUC_LIBS_DIR_CORE)
88 102 LIBUC_LIBS_DIR_UCSTRINGS_CMD = -L $(LIBUC_LIBS_DIR_UCSTRINGS)
89 103 LIBUC_LIBS_DIR_UART_CMD = -L $(LIBUC_LIBS_DIR_UART)
90 104 LIBUC_LIBS_DIR_SPI_CMD = -L $(LIBUC_LIBS_DIR_SPI)
105 LIBUC_LIBS_DIR_SSP_CMD = -L $(LIBUC_LIBS_DIR_SSP)
91 106 LIBUC_LIBS_DIR_IIC_CMD = -L $(LIBUC_LIBS_DIR_IIC)
92 107 LIBUC_LIBS_DIR_ADC_CMD = -L $(LIBUC_LIBS_DIR_ADC)
108 LIBUC_LIBS_DIR_24LC0X_CMD = -L $(LIBUC_LIBS_DIR_24LC0X)
109 LIBUC_LIBS_DIR_SDCARD_CMD = -L $(LIBUC_LIBS_DIR_SDCARD)
110 LIBUC_LIBS_DIR_VS10XX_CMD = -L $(LIBUC_LIBS_DIR_VS10XX)
111 LIBUC_LIBS_DIR_BLKDEVICE_CMD = -L $(LIBUC_LIBS_DIR_BLKDEVICE)
93 112
94 113 LIBUC_INC_DIR = $(LIBUC)/lib/includes/lpc17XX
95 114 LIBUC_INC_DIR_CORE = $(LIBUC_INC_DIR)/CORE
96 115 LIBUC_INC_DIR_UCSTRINGS = $(LIBUC_INC_DIR)/STRINGS/$(ARCH)
97 116 LIBUC_INC_DIR_UART = $(LIBUC_INC_DIR)/UART
98 117 LIBUC_INC_DIR_SPI = $(LIBUC_INC_DIR)/SPI
118 LIBUC_INC_DIR_SSP = $(LIBUC_INC_DIR)/SSP
99 119 LIBUC_INC_DIR_IIC = $(LIBUC_INC_DIR)/IIC
100 120 LIBUC_INC_DIR_ADC = $(LIBUC_INC_DIR)/ADC
121 LIBUC_INC_DIR_24LC0X = $(LIBUC_INC_DIR)/24LCXX/24LC0X
122 LIBUC_INC_DIR_SDCARD = $(LIBUC_INC_DIR)/SDCARD
123 LIBUC_INC_DIR_VS10XX = $(LIBUC_INC_DIR)/VS10XX
124 LIBUC_INC_DIR_BLKDEVICE = $(LIBUC_INC_DIR)/BLKDEVICE
101 125
102 126 LIBUC_INC_DIR_CORE_CMD = -I $(LIBUC_INC_DIR_CORE)
103 127 LIBUC_INC_DIR_UCSTRINGS_CMD = -I $(LIBUC_INC_DIR_UCSTRINGS)
104 128 LIBUC_INC_DIR_UART_CMD = -I $(LIBUC_INC_DIR_UART)
105 129 LIBUC_INC_DIR_SPI_CMD = -I $(LIBUC_INC_DIR_SPI)
130 LIBUC_INC_DIR_SSP_CMD = -I $(LIBUC_INC_DIR_SSP)
106 131 LIBUC_INC_DIR_IIC_CMD = -I $(LIBUC_INC_DIR_IIC)
107 132 LIBUC_INC_DIR_ADC_CMD = -I $(LIBUC_INC_DIR_ADC)
108
133 LIBUC_INC_DIR_24LC0X_CMD = -I $(LIBUC_INC_DIR_24LC0X)
134 LIBUC_INC_DIR_SDCARD_CMD = -I $(LIBUC_INC_DIR_SDCARD)
135 LIBUC_INC_DIR_VS10XX_CMD = -I $(LIBUC_INC_DIR_VS10XX)
136 LIBUC_INC_DIR_BLKDEVICE_CMD = -I $(LIBUC_INC_DIR_BLKDEVICE)
109 137
110 138 #---------------------------------------------------------------------------------
111 139 # BOARD SUPORT PACKAGES
@@ -123,6 +151,10 APPSOURCES += $(ARCHFOLDER)/startup_LPC
123 151 LPC17XX_INCDIR=$(ARCHFOLDER)
124 152
125 153
154 #---------------------------------------------------------------------------------
155 # RULES
156 #---------------------------------------------------------------------------------
157
126 158 all:
127 159 @echo "lpc17XX-arm-noabi-gcc rules"
128 160
General Comments 0
You need to be logged in to leave comments. Login now