##// 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 entering extended mode
2 entering extended mode
3 %&-line parsing enabled.
3 %&-line parsing enabled.
4 **PortingGuide.tex
4 **PortingGuide.tex
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -4,16 +4,16 LIBUC = /opt/libuc2
4 include $(LIBUC)/rules/common/rules.mk
4 include $(LIBUC)/rules/common/rules.mk
5
5
6 all:subdir
6 all:subdir
7 make -C lib
7 make -C bsp
8 make -C bsp
8 make -C examples
9 make -C examples
9 make -C lib
10 make -C Doc
10 make -C Doc
11 @echo Code compiled
11 @echo Code compiled
12
12
13 clean:
13 clean:
14 make clean -C lib
14 make clean -C bsp
15 make clean -C bsp
15 make clean -C examples
16 make clean -C examples
16 make clean -C lib
17 make clean -C Doc
17 make clean -C Doc
18 @echo Code compiled
18 @echo Code compiled
19
19
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -24,6 +24,10
24 #include "LPC17xx.h"
24 #include "LPC17xx.h"
25 #include <uart.h>
25 #include <uart.h>
26 #include <iic.h>
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 extern uartDev* UART0;
33 extern uartDev* UART0;
@@ -35,8 +39,18 extern i2cDev* IIC0;
35 extern i2cDev* IIC1;
39 extern i2cDev* IIC1;
36 extern i2cDev* IIC2;
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 extern float VREF0;
50 extern float VREF0;
39
51
52 extern unsigned int currentCpuFreq;
53
40 #define pll0useInternal 0
54 #define pll0useInternal 0
41 #define pll0useMainOsc 1
55 #define pll0useMainOsc 1
42 #define pll0useRTC 2
56 #define pll0useRTC 2
@@ -72,9 +86,22 extern int bsp_init();
72 extern void bsp_GPIO_init();
86 extern void bsp_GPIO_init();
73 extern void bsp_uart_init();
87 extern void bsp_uart_init();
74 extern void bsp_iic_init();
88 extern void bsp_iic_init();
89 extern void bsp_ssp_init();
90 extern void bsp_SD_init();
75 extern void consoleputc(char);
91 extern void consoleputc(char);
76 extern char consolegetc();
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 #endif
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 ARCH = lpc17XX-arm-noabi-gcc
9 ARCH = lpc17XX-arm-noabi-gcc
10 ARCHFOLDER = $(LIBUC)/rules/lpc17XX-arm-noabi-gcc
10 ARCHFOLDER = $(LIBUC)/rules/lpc17XX-arm-noabi-gcc
11 TARGET=libbsp
11 TARGET=libbsp
12 LIBUC_INCLUDES=$(LIBUC_INC_DIR_UART_CMD) $(LIBUC_INC_DIR_IIC_CMD) $(LIBUC_INC_DIR_CORE_CMD)
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_UART_CMD) $(LIBUC_LIBS_UART) $(LIBUC_LIBS_DIR_IIC_CMD) $(LIBUC_LIBS_IIC) $(LIBUC_LIBS_DIR_CORE_CMD) $(LIBUC_LIBS_CORE)
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 TARGETINSTALLPATH=$(LIBUC_BSP_BIN_DIR)/LandTiger
14 TARGETINSTALLPATH=$(LIBUC_BSP_BIN_DIR)/LandTiger
15 HEADERSINSTALLPATH=$(LIBUC_BSP_INC_DIR)/LandTiger
15 HEADERSINSTALLPATH=$(LIBUC_BSP_INC_DIR)/LandTiger
16 BSP=generic
16 BSP=generic
@@ -37,6 +37,14 i2cDev* IIC0=(i2cDev*)0;
37 i2cDev* IIC1=(i2cDev*)0;
37 i2cDev* IIC1=(i2cDev*)0;
38 i2cDev* IIC2=(i2cDev*)0;
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 int bsp_init()
48 int bsp_init()
41 {
49 {
42 bsp_GPIO_init();
50 bsp_GPIO_init();
@@ -46,6 +54,8 int bsp_init()
46 currentCpuFreq=coregetCpuFreq();
54 currentCpuFreq=coregetCpuFreq();
47 bsp_uart_init();
55 bsp_uart_init();
48 bsp_iic_init();
56 bsp_iic_init();
57 bsp_ssp_init();
58 bsp_SD_init();
49 return 0;
59 return 0;
50 }
60 }
51
61
@@ -74,6 +84,24 void bsp_uart_init()
74 uartsetup(UART2,38400,8,1,uartNoParity);
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 void bsp_iic_init()
105 void bsp_iic_init()
78 {
106 {
79 LPC_SC->PCONP |= ( 1 << 7 ); // power up IIC0
107 LPC_SC->PCONP |= ( 1 << 7 ); // power up IIC0
@@ -83,6 +111,19 void bsp_iic_init()
83 LPC_PINCON->PINSEL1 &= ~(1<<25);
111 LPC_PINCON->PINSEL1 &= ~(1<<25);
84 IIC0 = i2copen(0);
112 IIC0 = i2copen(0);
85 i2csetdatarate(IIC0,100000);
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 void consoleputc(char c)
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 /opt/libuc2/rules/lpc17XX-arm-noabi-gcc/system_LPC17xx.h \
3 /opt/libuc2/rules/lpc17XX-arm-noabi-gcc/system_LPC17xx.h \
4 /opt/libuc2/lib/includes/lpc17XX/UART/uart.h \
4 /opt/libuc2/lib/includes/lpc17XX/UART/uart.h \
5 /opt/libuc2/lib/includes/lpc17XX/IIC/iic.h \
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 /opt/libuc2/lib/includes/lpc17XX/CORE/core.h
11 /opt/libuc2/lib/includes/lpc17XX/CORE/core.h
7
12
8 bsp.h:
13 bsp.h:
@@ -17,4 +22,14 bsp.h:
17
22
18 /opt/libuc2/lib/includes/lpc17XX/IIC/iic.h:
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 /opt/libuc2/lib/includes/lpc17XX/CORE/core.h:
35 /opt/libuc2/lib/includes/lpc17XX/CORE/core.h:
@@ -24,6 +24,10
24 #include "LPC17xx.h"
24 #include "LPC17xx.h"
25 #include <uart.h>
25 #include <uart.h>
26 #include <iic.h>
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 extern uartDev* UART0;
33 extern uartDev* UART0;
@@ -35,8 +39,18 extern i2cDev* IIC0;
35 extern i2cDev* IIC1;
39 extern i2cDev* IIC1;
36 extern i2cDev* IIC2;
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 extern float VREF0;
50 extern float VREF0;
39
51
52 extern unsigned int currentCpuFreq;
53
40 #define pll0useInternal 0
54 #define pll0useInternal 0
41 #define pll0useMainOsc 1
55 #define pll0useMainOsc 1
42 #define pll0useRTC 2
56 #define pll0useRTC 2
@@ -72,9 +86,22 extern int bsp_init();
72 extern void bsp_GPIO_init();
86 extern void bsp_GPIO_init();
73 extern void bsp_uart_init();
87 extern void bsp_uart_init();
74 extern void bsp_iic_init();
88 extern void bsp_iic_init();
89 extern void bsp_ssp_init();
90 extern void bsp_SD_init();
75 extern void consoleputc(char);
91 extern void consoleputc(char);
76 extern char consolegetc();
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 #endif
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 TARGETINSTALLPATH = $(LIBUC_BSP_BIN_DIR)/LandTiger
4 TARGETINSTALLPATH = $(LIBUC_BSP_BIN_DIR)/LandTiger
5 HEADERSINSTALLPATH = $(LIBUC_BSP_INC_DIR)/LandTiger
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 SOURCES += bsp.c
9 SOURCES += bsp.c
10
10
@@ -1,4 +1,4
1 TEMPLATE = dir
1 TEMPLATE = dir
2 SUBDIRS += generic \
2 SUBDIRS += generic \
3 LandTiger \
3 LandTiger \
4 mbed
4 mbed
@@ -4,16 +4,14 LIBUC = /opt/libuc2
4 include $(LIBUC)/rules/common/rules.mk
4 include $(LIBUC)/rules/common/rules.mk
5
5
6 all:subdir
6 all:subdir
7 make -C lpc1768_led_blink
7 make -C lpc17XX
8 make -C lpc1768_led_blink_Clk_api
8 make -C SDCARD
9 make -C lpc1768_uart
9 make -C SDCARD2
10 make -C lpc1768_uart_LandTiger
11 @echo Code compiled
10 @echo Code compiled
12
11
13 clean:
12 clean:
14 make clean -C lpc1768_led_blink
13 make clean -C lpc17XX
15 make clean -C lpc1768_led_blink_Clk_api
14 make clean -C SDCARD
16 make clean -C lpc1768_uart
15 make clean -C SDCARD2
17 make clean -C lpc1768_uart_LandTiger
18 @echo Code compiled
16 @echo Code compiled
19
17
@@ -1,6 +1,4
1 TEMPLATE = dir
1 TEMPLATE = dir
2 SUBDIRS += lpc1768_led_blink\
2 SUBDIRS += lpc17XX \
3 lpc1768_led_blink_Clk_api \
3 SDCARD \
4 lpc1768_uart \
4 SDCARD2
5 lpc1768_uart_LandTiger
6
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -57,7 +57,7 extern void i2csetup(i2cDev* dev,int clk
57 extern unsigned char i2cgetpclkfactor(i2cDev* dev);
57 extern unsigned char i2cgetpclkfactor(i2cDev* dev);
58 extern void i2csetpclkfactor(i2cDev* dev,unsigned char pclkfactor);
58 extern void i2csetpclkfactor(i2cDev* dev,unsigned char pclkfactor);
59 extern void i2csetdatarate(i2cDev* dev,unsigned int dataRate);
59 extern void i2csetdatarate(i2cDev* dev,unsigned int dataRate);
60
60 extern int i2cgetdatarate(i2cDev* dev);
61 #endif
61 #endif
62
62
63
63
@@ -26,3 +26,4 void clearstr(char* a);
26 void int2hex(unsigned long a,char*b);
26 void int2hex(unsigned long a,char*b);
27 int libucprintf(const char*,...);
27 int libucprintf(const char*,...);
28 int libucscanf(const char*,...);
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 include $(LIBUC)/rules/common/rules.mk
4 include $(LIBUC)/rules/common/rules.mk
5
5
6 all:subdir
6 all:subdir
7 make -C lpc21XX
7 make -C lpc17XX
8 make -C lpc17XX
9 make -C common
8 @echo Code compiled
10 @echo Code compiled
9
11
10 clean:
12 clean:
13 make clean -C lpc21XX
11 make clean -C lpc17XX
14 make clean -C lpc17XX
15 make clean -C common
12 @echo Code compiled
16 @echo Code compiled
13
17
@@ -2,18 +2,6
2 PROJECTDIR = `pwd`
2 PROJECTDIR = `pwd`
3 LIBUC = /opt/libuc2
3 LIBUC = /opt/libuc2
4
4
5 HEADERSINSTALLPATH = $(LIBUC_INC_DIR)/STRINGS
5 all:
6 HEADERS += libucstrings.h
6 make -f lpc17XX.mk
7 LIBSOURCES += libucstrings.c
7 make -f lpc21XX.mk
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
@@ -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 void int2hex(unsigned long a,char*b);
26 void int2hex(unsigned long a,char*b);
27 int libucprintf(const char*,...);
27 int libucprintf(const char*,...);
28 int libucscanf(const char*,...);
28 int libucscanf(const char*,...);
29 void libucprintchartable(char* table,int size,const char* format,const char* separator);
@@ -1,12 +1,26
1 TEMPLATE = lib
1 TEMPLATE = lib
2 ARCH = lpc17XX-arm-noabi-gcc
2 lpc17XX.ARCH = lpc17XX-arm-noabi-gcc
3 TARGET = libucstrings
3 lpc17XX.TARGET = libucstrings
4 TARGETINSTALLPATH = $(LIBUC_LIBS_DIR_UCSTRINGS)
4 lpc17XX.TARGETINSTALLPATH = $(LIBUC_LIBS_DIR_UCSTRINGS)
5 HEADERSINSTALLPATH = $(LIBUC_INC_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 TEMPLATE = dir
1 TEMPLATE = dir
2 SUBDIRS += lpc17XX \
2 SUBDIRS += lpc21XX \
3 lpc21XX \
3 lpc17XX \
4 LEON3
4 LEON3 \
5 common
5
6
@@ -2,7 +2,7
2 PROJECTDIR = `pwd`
2 PROJECTDIR = `pwd`
3 LIBUC = /opt/libuc2
3 LIBUC = /opt/libuc2
4
4
5 HEADERSINSTALLPATH = $(LIBUC_INC_DIR)/IIC
5 HEADERSINSTALLPATH = $(LIBUC_INC_DIR_IIC)
6 HEADERS += iic.h
6 HEADERS += iic.h
7 LIBSOURCES += iic.c
7 LIBSOURCES += iic.c
8 OBJECTFILES = $(LIBSOURCES:.c=.o)
8 OBJECTFILES = $(LIBSOURCES:.c=.o)
@@ -11,8 +11,8 ARCHFOLDER = $(LIBUC)/rules/lpc17XX-arm-
11 TARGET=libiic
11 TARGET=libiic
12 LIBUC_INCLUDES=$(LIBUC_INC_DIR_CORE_CMD)
12 LIBUC_INCLUDES=$(LIBUC_INC_DIR_CORE_CMD)
13 LIBUC_LIBRARIES=$(LIBUC_LIBS_DIR_CORE_CMD) $(LIBUC_LIBS_CORE)
13 LIBUC_LIBRARIES=$(LIBUC_LIBS_DIR_CORE_CMD) $(LIBUC_LIBS_CORE)
14 TARGETINSTALLPATH=$(LIBUC_LIBS_DIR)/IIC
14 TARGETINSTALLPATH=$(LIBUC_LIBS_DIR_IIC)
15 HEADERSINSTALLPATH=$(LIBUC_INC_DIR)/IIC
15 HEADERSINSTALLPATH=$(LIBUC_INC_DIR_IIC)
16 BSP=generic
16 BSP=generic
17 include $(ARCHFOLDER)/rules.mk
17 include $(ARCHFOLDER)/rules.mk
18
18
@@ -22,13 +22,13
22 #include "iic.h"
22 #include "iic.h"
23 #include "core.h"
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 (iicdev)->I2CONSET = (IICONSET);\
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 (iicdev)->I2CONSET = (IICONSET);\
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 dev->I2CONCLR = 0x28;
38 dev->I2CONCLR = 0x28;
39 iicdat = (address<<1) & 0xFE;
39 iicdat = (address<<1) & 0xFE;
40 int count = (*datcnt) + 2;
40 int count = (*datcnt) + 2;
41 *datcnt = 0;
41 (*datcnt) = 0;
42 while(dev->I2STAT != 0xF8); //waiting for device to be ready /!\ should add timeout
42 while(dev->I2STAT != 0xF8); //waiting for device to be ready /!\ should add timeout
43 dev->I2CONSET = (1<<5); //initiate transfert
43 dev->I2CONSET = (1<<5); //initiate transfert
44 while(count>0)
44 while(count>0)
@@ -83,12 +83,15 i2ctrl i2cwrite2(i2cDev* dev,char addres
83 }
83 }
84 break;
84 break;
85 case 0x20:
85 case 0x20:
86 return i2noack;
86 count = 0;
87 count = 0;
87 break;
88 break;
88 case 0x30:
89 case 0x30:
90 return i2noack;
89 count = 0;
91 count = 0;
90 break;
92 break;
91 case 0x38:
93 case 0x38:
94 return i2arbloss;
92 count = 0;
95 count = 0;
93 break;
96 break;
94 default:
97 default:
@@ -164,15 +167,16 i2ctrl i2cread(i2cDev* dev,char address,
164 char iicdat=0;
167 char iicdat=0;
165 dev->I2CONCLR = 0x28;
168 dev->I2CONCLR = 0x28;
166 iicdat = (address<<1) + 1;
169 iicdat = (address<<1) + 1;
167 int count = (*cnt) + 1;
170 unsigned int count = (*cnt);
168 *cnt = 0;
171 *cnt = 0;
169 while(dev->I2STAT != 0xF8); //waiting for device to be ready /!\ should add timeout
172 while(dev->I2STAT != 0xF8); //waiting for device to be ready /!\ should add timeout
170 dev->I2CONSET = (1<<5); //initiate transfert
173 dev->I2CONSET = (1<<5); //initiate transfert
171 while(count>0)
174 while(count!=0)
172 {
175 {
173 while((dev->I2CONSET & 0x08)!=0x08);
176 while((dev->I2CONSET & 0x08)!=0x08);
174 switch(dev->I2STAT)
177 switch(dev->I2STAT)
175 {
178 {
179 while((dev->I2CONSET & (1<<3))!=(1<<3));
176 case 0x08:
180 case 0x08:
177 iicputdata(dev,iicdat,(1<<2),0x28);
181 iicputdata(dev,iicdat,(1<<2),0x28);
178 break;
182 break;
@@ -180,29 +184,37 i2ctrl i2cread(i2cDev* dev,char address,
180 iicputdata(dev,iicdat,(1<<2),0x28);
184 iicputdata(dev,iicdat,(1<<2),0x28);
181 break;
185 break;
182 case 0x40:
186 case 0x40:
183 dev->I2CONSET = (1<<2);
187 if((count!=1)) dev->I2CONSET = (1<<2);
184 dev->I2CONCLR = (1<<3);
188 else dev->I2CONCLR = (1<<2);
185 count--;
189 dev->I2CONCLR = 1<<3;
186 break;
190 break;
187 case 0x50:
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 count--;
194 count--;
190 *cnt = (*cnt) + 1;
195 *cnt = (*cnt) + 1;
191 *data++ = iicdat;
196 *data = iicdat;
197 data++;
192 break;
198 break;
193 case 0x48:
199 case 0x48:
194 return i2noack;
200 dev->I2CONSET = 0x14;
201 dev->I2CONCLR = 8;
202 return i2noerr;
195 break;
203 break;
196 case 0x58:
204 case 0x58:
197 count = 0;
205 iicgetdata(dev,iicdat,(0x14),(8));
198 return i2noack;
206 count--;
207 *cnt = (*cnt) + 1;
208 *data = iicdat;
209 data++;
210 return i2noerr;
199 break;
211 break;
200 default:
212 default:
201 break;
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 dev->I2CONCLR = 1<<3;
218 dev->I2CONCLR = 1<<3;
207 return i2noerr;
219 return i2noerr;
208 }
220 }
@@ -312,8 +324,28 void i2csetdatarate(i2cDev* dev,unsigned
312 i2csetup(dev,i2csclkl,i2csclkl);
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 extern unsigned char i2cgetpclkfactor(i2cDev* dev);
57 extern unsigned char i2cgetpclkfactor(i2cDev* dev);
58 extern void i2csetpclkfactor(i2cDev* dev,unsigned char pclkfactor);
58 extern void i2csetpclkfactor(i2cDev* dev,unsigned char pclkfactor);
59 extern void i2csetdatarate(i2cDev* dev,unsigned int dataRate);
59 extern void i2csetdatarate(i2cDev* dev,unsigned int dataRate);
60
60 extern int i2cgetdatarate(i2cDev* dev);
61 #endif
61 #endif
62
62
63
63
@@ -1,8 +1,8
1 TEMPLATE = lib
1 TEMPLATE = lib
2 ARCH = lpc17XX-arm-noabi-gcc
2 ARCH = lpc17XX-arm-noabi-gcc
3 TARGET = libiic
3 TARGET = libiic
4 TARGETINSTALLPATH = $(LIBUC_LIBS_DIR)/IIC
4 TARGETINSTALLPATH = $(LIBUC_LIBS_DIR_IIC)
5 HEADERSINSTALLPATH = $(LIBUC_INC_DIR)/IIC
5 HEADERSINSTALLPATH = $(LIBUC_INC_DIR_IIC)
6
6
7 LIBS += CORE
7 LIBS += CORE
8
8
@@ -4,16 +4,16 LIBUC = /opt/libuc2
4 include $(LIBUC)/rules/common/rules.mk
4 include $(LIBUC)/rules/common/rules.mk
5
5
6 all:subdir
6 all:subdir
7 make -C CORE
7 make -C UART
8 make -C UART
8 make -C IIC
9 make -C IIC
9 make -C CORE
10 make -C SSP
10 make -C STRINGS
11 @echo Code compiled
11 @echo Code compiled
12
12
13 clean:
13 clean:
14 make clean -C CORE
14 make clean -C UART
15 make clean -C UART
15 make clean -C IIC
16 make clean -C IIC
16 make clean -C CORE
17 make clean -C SSP
17 make clean -C STRINGS
18 @echo Code compiled
18 @echo Code compiled
19
19
@@ -1,9 +1,10
1 TEMPLATE = dir
1 TEMPLATE = dir
2 SUBDIRS += UART\
2 SUBDIRS += CORE \
3 UART\
3 SPI \
4 SPI \
4 ADC \
5 ADC \
5 IIC \
6 IIC \
6 CORE \
7 SSP
7 STRINGS
8
8
9
9
10
@@ -1,6 +1,6
1 TEMPLATE = dir
1 TEMPLATE = dir
2 SUBDIRS += bsp\
2 SUBDIRS += lib \
3 bsp\
3 examples \
4 examples \
4 lib \
5 Doc
5 Doc
6
6
@@ -1,6 +1,6
1 TEMPLATE = dir
1 TEMPLATE = dir
2 SUBDIRS += bsp\
2 SUBDIRS += lib \
3 bsp\
3 examples \
4 examples \
4 lib \
5 Doc
5 Doc
6
6
@@ -68,44 +68,72 LIBUC_CXXFLAGS_STATIC_LIB = -fPIC
68 LIBUC_CXXFLAGS_SOFT_FPU = -msoft-float
68 LIBUC_CXXFLAGS_SOFT_FPU = -msoft-float
69 LIBUC_CXXFLAGS_HARD_FPU =
69 LIBUC_CXXFLAGS_HARD_FPU =
70
70
71 #---------------------------------------------------------------------------------
72 # LIBRARY DEFINITIONS
73 #---------------------------------------------------------------------------------
74
71 LIBUC_LIBS =
75 LIBUC_LIBS =
72 LIBUC_LIBS_CORE = -static -lcore
76 LIBUC_LIBS_CORE = -static -lcore
73 LIBUC_LIBS_UCSTRINGS = -static -lucstrings
77 LIBUC_LIBS_UCSTRINGS = -static -lucstrings
74 LIBUC_LIBS_UART = -static -luart
78 LIBUC_LIBS_UART = -static -luart
75 LIBUC_LIBS_SPI = -static -lspi
79 LIBUC_LIBS_SPI = -static -lspi
80 LIBUC_LIBS_SSP = -static -lssp
76 LIBUC_LIBS_IIC = -static -liic
81 LIBUC_LIBS_IIC = -static -liic
77 LIBUC_LIBS_ADC = -static -ladc
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 LIBUC_LIBS_DIR = $(LIBUC)/lib/bin/lpc17XX
88 LIBUC_LIBS_DIR = $(LIBUC)/lib/bin/lpc17XX
80 LIBUC_LIBS_DIR_CORE = $(LIBUC_LIBS_DIR)/CORE
89 LIBUC_LIBS_DIR_CORE = $(LIBUC_LIBS_DIR)/CORE
81 LIBUC_LIBS_DIR_UCSTRINGS = $(LIBUC_LIBS_DIR)/STRINGS/$(ARCH)
90 LIBUC_LIBS_DIR_UCSTRINGS = $(LIBUC_LIBS_DIR)/STRINGS/$(ARCH)
82 LIBUC_LIBS_DIR_UART = $(LIBUC_LIBS_DIR)/UART
91 LIBUC_LIBS_DIR_UART = $(LIBUC_LIBS_DIR)/UART
83 LIBUC_LIBS_DIR_SPI = $(LIBUC_LIBS_DIR)/SPI
92 LIBUC_LIBS_DIR_SPI = $(LIBUC_LIBS_DIR)/SPI
93 LIBUC_LIBS_DIR_SSP = $(LIBUC_LIBS_DIR)/SSP
84 LIBUC_LIBS_DIR_IIC = $(LIBUC_LIBS_DIR)/IIC
94 LIBUC_LIBS_DIR_IIC = $(LIBUC_LIBS_DIR)/IIC
85 LIBUC_LIBS_DIR_ADC = $(LIBUC_LIBS_DIR)/ADC
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 LIBUC_LIBS_DIR_CORE_CMD = -L $(LIBUC_LIBS_DIR_CORE)
101 LIBUC_LIBS_DIR_CORE_CMD = -L $(LIBUC_LIBS_DIR_CORE)
88 LIBUC_LIBS_DIR_UCSTRINGS_CMD = -L $(LIBUC_LIBS_DIR_UCSTRINGS)
102 LIBUC_LIBS_DIR_UCSTRINGS_CMD = -L $(LIBUC_LIBS_DIR_UCSTRINGS)
89 LIBUC_LIBS_DIR_UART_CMD = -L $(LIBUC_LIBS_DIR_UART)
103 LIBUC_LIBS_DIR_UART_CMD = -L $(LIBUC_LIBS_DIR_UART)
90 LIBUC_LIBS_DIR_SPI_CMD = -L $(LIBUC_LIBS_DIR_SPI)
104 LIBUC_LIBS_DIR_SPI_CMD = -L $(LIBUC_LIBS_DIR_SPI)
105 LIBUC_LIBS_DIR_SSP_CMD = -L $(LIBUC_LIBS_DIR_SSP)
91 LIBUC_LIBS_DIR_IIC_CMD = -L $(LIBUC_LIBS_DIR_IIC)
106 LIBUC_LIBS_DIR_IIC_CMD = -L $(LIBUC_LIBS_DIR_IIC)
92 LIBUC_LIBS_DIR_ADC_CMD = -L $(LIBUC_LIBS_DIR_ADC)
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 LIBUC_INC_DIR = $(LIBUC)/lib/includes/lpc17XX
113 LIBUC_INC_DIR = $(LIBUC)/lib/includes/lpc17XX
95 LIBUC_INC_DIR_CORE = $(LIBUC_INC_DIR)/CORE
114 LIBUC_INC_DIR_CORE = $(LIBUC_INC_DIR)/CORE
96 LIBUC_INC_DIR_UCSTRINGS = $(LIBUC_INC_DIR)/STRINGS/$(ARCH)
115 LIBUC_INC_DIR_UCSTRINGS = $(LIBUC_INC_DIR)/STRINGS/$(ARCH)
97 LIBUC_INC_DIR_UART = $(LIBUC_INC_DIR)/UART
116 LIBUC_INC_DIR_UART = $(LIBUC_INC_DIR)/UART
98 LIBUC_INC_DIR_SPI = $(LIBUC_INC_DIR)/SPI
117 LIBUC_INC_DIR_SPI = $(LIBUC_INC_DIR)/SPI
118 LIBUC_INC_DIR_SSP = $(LIBUC_INC_DIR)/SSP
99 LIBUC_INC_DIR_IIC = $(LIBUC_INC_DIR)/IIC
119 LIBUC_INC_DIR_IIC = $(LIBUC_INC_DIR)/IIC
100 LIBUC_INC_DIR_ADC = $(LIBUC_INC_DIR)/ADC
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 LIBUC_INC_DIR_CORE_CMD = -I $(LIBUC_INC_DIR_CORE)
126 LIBUC_INC_DIR_CORE_CMD = -I $(LIBUC_INC_DIR_CORE)
103 LIBUC_INC_DIR_UCSTRINGS_CMD = -I $(LIBUC_INC_DIR_UCSTRINGS)
127 LIBUC_INC_DIR_UCSTRINGS_CMD = -I $(LIBUC_INC_DIR_UCSTRINGS)
104 LIBUC_INC_DIR_UART_CMD = -I $(LIBUC_INC_DIR_UART)
128 LIBUC_INC_DIR_UART_CMD = -I $(LIBUC_INC_DIR_UART)
105 LIBUC_INC_DIR_SPI_CMD = -I $(LIBUC_INC_DIR_SPI)
129 LIBUC_INC_DIR_SPI_CMD = -I $(LIBUC_INC_DIR_SPI)
130 LIBUC_INC_DIR_SSP_CMD = -I $(LIBUC_INC_DIR_SSP)
106 LIBUC_INC_DIR_IIC_CMD = -I $(LIBUC_INC_DIR_IIC)
131 LIBUC_INC_DIR_IIC_CMD = -I $(LIBUC_INC_DIR_IIC)
107 LIBUC_INC_DIR_ADC_CMD = -I $(LIBUC_INC_DIR_ADC)
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 # BOARD SUPORT PACKAGES
139 # BOARD SUPORT PACKAGES
@@ -123,6 +151,10 APPSOURCES += $(ARCHFOLDER)/startup_LPC
123 LPC17XX_INCDIR=$(ARCHFOLDER)
151 LPC17XX_INCDIR=$(ARCHFOLDER)
124
152
125
153
154 #---------------------------------------------------------------------------------
155 # RULES
156 #---------------------------------------------------------------------------------
157
126 all:
158 all:
127 @echo "lpc17XX-arm-noabi-gcc rules"
159 @echo "lpc17XX-arm-noabi-gcc rules"
128
160
General Comments 0
You need to be logged in to leave comments. Login now