##// END OF EJS Templates
sync
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL -
r33:565d4ea31641 dev_alexis
parent child
Show More
@@ -1,226 +1,230
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2011, Alexis Jeandet
3 -- Copyright (C) 2011, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #include "bsp.h"
22 #include "bsp.h"
23 #include <streamdevices.h>
23 #include <streamdevices.h>
24 #include <malloc.h>
24 #include <malloc.h>
25 #include <gpio.h>
25 #include <gpio.h>
26 #include <uart.h>
26 #include <uart.h>
27 #include <stdio.h>
27 #include <stdio.h>
28 #include <stm32f4xx_gpio.h>
28 #include <stm32f4xx_gpio.h>
29 #include <stm32f4xx_fsmc.h>
29 #include <stm32f4xx_fsmc.h>
30 #include <i2c.h>
30 #include <i2c.h>
31 uint32_t OSC0 =8000000;
31 uint32_t OSC0 =8000000;
32 uint32_t INTOSC =16000000;
32 uint32_t INTOSC =16000000;
33 uint32_t RTCOSC =32768;
33 uint32_t RTCOSC =32768;
34 uint32_t currentCpuFreq=0;
34 uint32_t currentCpuFreq=0;
35 extern streamdevice* __opnfiles__[__MAX_OPENED_FILES__];
35 extern streamdevice* __opnfiles__[__MAX_OPENED_FILES__];
36 LCD_t lcd0;
36 LCD_t lcd0;
37 LCD_IF_t lcdIF0;
37 LCD_IF_t lcdIF0;
38
38
39 volatile int16_t* lcd0_CMD=(volatile int16_t*)0x60000000;
39 volatile int16_t* lcd0_CMD=(volatile int16_t*)0x60000000;
40 volatile int16_t* lcd0_DATA=(volatile int16_t*)(0x60000000+(1<<20));
40 volatile int16_t* lcd0_DATA=(volatile int16_t*)(0x60000000+(1<<20));
41
41
42 float VREF0 =(float)3.3;
42 float VREF0 =(float)3.3;
43
43
44 int bsp_init()
44 int bsp_init()
45 {
45 {
46 int i=0;
46 int i=0;
47 for(i=0;i<32;i++)
47 for(i=0;i<32;i++)
48 {
48 {
49 __opnfiles__[i] = NULL;
49 __opnfiles__[i] = NULL;
50 }
50 }
51 bsp_GPIO_init();
51 bsp_GPIO_init();
52 bsp_uart_init();
52 bsp_uart_init();
53 bsp_iic_init();
53 bsp_iic_init();
54 bsp_FSMC_init();
54 bsp_FSMC_init();
55 printf("\r================================================================\n\r");
55 printf("\r================================================================\n\r");
56 printf("================================================================\n\r");
56 printf("================================================================\n\r");
57 printf(BSP);
57 printf(BSP);
58 printf(" initialised\n\r");
58 printf(" initialised\n\r");
59 printf("================================================================\n\r");
59 printf("================================================================\n\r");
60 return 1;
60 return 1;
61 }
61 }
62
62
63 void bsp_GPIO_init()
63 void bsp_GPIO_init()
64 {
64 {
65 gpio_t gpio1 = gpioopen(LED1);
65 gpio_t gpio1 = gpioopen(LED1);
66 gpio_t gpio2 = gpioopen(LED2);
66 gpio_t gpio2 = gpioopen(LED2);
67 gpio_t gpio3 = gpioopen(LED3);
67 gpio_t gpio3 = gpioopen(LED3);
68 gpio_t gpio4 = gpioopen(PSU_DISABLE);
68 gpio_t gpio4 = gpioopen(PSU_DISABLE);
69 gpio_t gpio5 = gpioopen(PSU_ALERT_5V);
69 gpio_t gpio5 = gpioopen(PSU_ALERT_5V);
70 gpio_t gpio6 = gpioopen(PSU_ALERT_1_5V);
70 gpio_t gpio6 = gpioopen(PSU_ALERT_1_5V);
71 gpio_t gpio7 = gpioopen(PSU_ALERT_3_3V);
71 gpio_t gpio7 = gpioopen(PSU_ALERT_3_3V);
72 gpiosetspeed(&gpio1,gpiohighspeed);
72 gpiosetspeed(&gpio1,gpiohighspeed);
73 gpiosetspeed(&gpio2,gpiohighspeed);
73 gpiosetspeed(&gpio2,gpiohighspeed);
74 gpiosetspeed(&gpio3,gpiohighspeed);
74 gpiosetspeed(&gpio3,gpiohighspeed);
75 gpiosetspeed(&gpio4,gpiohighspeed);
75 gpiosetspeed(&gpio4,gpiohighspeed);
76 gpiosetspeed(&gpio5,gpiohighspeed);
76 gpiosetspeed(&gpio5,gpiohighspeed);
77 gpiosetspeed(&gpio6,gpiohighspeed);
77 gpiosetspeed(&gpio6,gpiohighspeed);
78 gpiosetspeed(&gpio7,gpiohighspeed);
78 gpiosetspeed(&gpio7,gpiohighspeed);
79 gpioclr(PSU_DISABLE);
79 gpioclr(PSU_DISABLE);
80 gpiosetdir(&gpio1,gpiooutdir);
80 gpiosetdir(&gpio1,gpiooutdir);
81 gpiosetdir(&gpio3,gpiooutdir);
81 gpiosetdir(&gpio3,gpiooutdir);
82 gpiosetdir(&gpio2,gpiooutdir);
82 gpiosetdir(&gpio2,gpiooutdir);
83 gpiosetdir(&gpio4,gpiooutdir);
83 gpiosetdir(&gpio4,gpiooutdir);
84 gpiosetdir(&gpio5,gpioindir);
84 gpiosetdir(&gpio5,gpioindir);
85 gpiosetdir(&gpio6,gpioindir);
85 gpiosetdir(&gpio6,gpioindir);
86 gpiosetdir(&gpio7,gpioindir);
86 gpiosetdir(&gpio7,gpioindir);
87 gpioclr(PSU_DISABLE);
87 gpioclr(PSU_DISABLE);
88 }
88 }
89
89
90 void bsp_uart_init()
90 void bsp_uart_init()
91 {
91 {
92 if(__opnfiles__[1]==NULL)
92 if(__opnfiles__[1]==NULL)
93 {
93 {
94 //uart_t* uart1 = (uart_t*)malloc(sizeof(uart_t));
94 //uart_t* uart1 = (uart_t*)malloc(sizeof(uart_t));
95 streamdevice* fd1 = (streamdevice*)malloc(sizeof(streamdevice));
95 streamdevice* fd1 = (streamdevice*)malloc(sizeof(streamdevice));
96 uart_t uart = uartopenandconfig(uart1,uartparitynone | uart8bits | uartonestop,115200,PA9,PA10,-1,-1);
96 uart_t uart = uartopenandconfig(uart1,uartparitynone | uart8bits | uartonestop,115200,PA9,PA10,-1,-1);
97 uartmkstreamdev(uart,fd1);
97 uartmkstreamdev(uart,fd1);
98 __opnfiles__[1] = fd1;
98 __opnfiles__[1] = fd1;
99 }
99 }
100 else
100 else
101 {
101 {
102 uartopenandconfig(0,uartparitynone | uart8bits | uartonestop,115200,PA9,PA10,-1,-1);
102 uartopenandconfig(0,uartparitynone | uart8bits | uartonestop,115200,PA9,PA10,-1,-1);
103 }
103 }
104 }
104 }
105
105
106 void bsp_lcd0_write_reg(uint32_t reg,uint32_t data);
106 void bsp_lcd0_write_reg(uint32_t reg,uint32_t data);
107 void bsp_FSMC_init()
107 void bsp_FSMC_init()
108 {
108 {
109 #define GPIOGETPORT(gpio) ((GPIO_TypeDef*)(((((uint32_t)gpio) & (uint32_t)0x0000FF00)*(uint32_t)4) + (uint32_t)GPIOA))
109 #define GPIOGETPORT(gpio) ((GPIO_TypeDef*)(((((uint32_t)gpio) & (uint32_t)0x0000FF00)*(uint32_t)4) + (uint32_t)GPIOA))
110 #define GPIOPORTNUM(gpio) (((uint32_t)(gpio) & (uint32_t)0x0000FF00)>>(uint32_t)8)
110 #define GPIOPORTNUM(gpio) (((uint32_t)(gpio) & (uint32_t)0x0000FF00)>>(uint32_t)8)
111
111
112 gpio_t LCD_DBxList[]={PD14,PD15,PD0,PD1,PE7,PE8,PE9,PE10,PE11,PE12,PE13,PE14,PE15\
112 gpio_t LCD_DBxList[]={PD14,PD15,PD0,PD1,PE7,PE8,PE9,PE10,PE11,PE12,PE13,PE14,PE15\
113 ,PD8,PD9,PD10,PD4,PD5,PD7,PE4};
113 ,PD8,PD9,PD10,PD4,PD5,PD7,PE4};
114 for(int i=0;i<20;i++)
114 for(int i=0;i<20;i++)
115 {
115 {
116 gpio_t LCD_DBx = gpioopen(LCD_DBxList[i]);
116 gpio_t LCD_DBx = gpioopen(LCD_DBxList[i]);
117 LCD_DBx |= gpiohighspeed | gpioaf | gpiopushpulltype | gpionopulltype;
117 LCD_DBx |= gpiohighspeed | gpioaf | gpiopushpulltype | gpionopulltype;
118 gpiosetconfig(&LCD_DBx);
118 gpiosetconfig(&LCD_DBx);
119 GPIO_PinAFConfig(GPIOGETPORT(LCD_DBx), (uint8_t)(LCD_DBx & 0xF), GPIO_AF_FSMC);
119 GPIO_PinAFConfig(GPIOGETPORT(LCD_DBx), (uint8_t)(LCD_DBx & 0xF), GPIO_AF_FSMC);
120 }
120 }
121
121
122 FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
122 FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
123 FSMC_NORSRAMTimingInitTypeDef p;
123 FSMC_NORSRAMTimingInitTypeDef p;
124
124
125 /* Enable FSMC clock */
125 /* Enable FSMC clock */
126 RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);
126 RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);
127
127
128 /*-- FSMC Configuration ------------------------------------------------------*/
128 /*-- FSMC Configuration ------------------------------------------------------*/
129 /*----------------------- SRAM Bank 3 ----------------------------------------*/
129 /*----------------------- SRAM Bank 3 ----------------------------------------*/
130 /* FSMC_Bank1_NORSRAM4 configuration */
130 /* FSMC_Bank1_NORSRAM4 configuration */
131 p.FSMC_AddressSetupTime = 5;
131 p.FSMC_AddressSetupTime = 5;
132 p.FSMC_AddressHoldTime = 0;
132 p.FSMC_AddressHoldTime = 0;
133 p.FSMC_DataSetupTime = 9;
133 p.FSMC_DataSetupTime = 9;
134 p.FSMC_BusTurnAroundDuration = 0;
134 p.FSMC_BusTurnAroundDuration = 0;
135 p.FSMC_CLKDivision = 0;
135 p.FSMC_CLKDivision = 0;
136 p.FSMC_DataLatency = 0;
136 p.FSMC_DataLatency = 0;
137 p.FSMC_AccessMode = FSMC_AccessMode_A;
137 p.FSMC_AccessMode = FSMC_AccessMode_A;
138 /* Color LCD configuration ------------------------------------
138 /* Color LCD configuration ------------------------------------
139 LCD configured as follow:
139 LCD configured as follow:
140 - Data/Address MUX = Disable
140 - Data/Address MUX = Disable
141 - Memory Type = SRAM
141 - Memory Type = SRAM
142 - Data Width = 16bit
142 - Data Width = 16bit
143 - Write Operation = Enable
143 - Write Operation = Enable
144 - Extended Mode = Enable
144 - Extended Mode = Enable
145 - Asynchronous Wait = Disable */
145 - Asynchronous Wait = Disable */
146
146
147 FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
147 FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
148 FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
148 FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
149 FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
149 FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
150 FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
150 FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
151 FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
151 FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
152 FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
152 FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
153 FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
153 FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
154 FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
154 FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
155 FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
155 FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
156 FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
156 FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
157 FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
157 FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
158 FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
158 FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
159 FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
159 FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
160 FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
160 FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
161 FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
161 FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
162
162
163 FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
163 FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
164
164
165 /* Enable FSMC NOR/SRAM Bank3 */
165 /* Enable FSMC NOR/SRAM Bank1 */
166 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
166 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
167 lcdIF0.writereg=&bsp_lcd0_write_reg;
167 lcdIF0.writereg=&bsp_lcd0_write_reg;
168 lcd0.interface=&lcdIF0;
168 lcd0.interface=&lcdIF0;
169 lcd0.init=&ili9328init;
169 lcd0.init=&ili9328init;
170 lcd0.init(&lcd0);
170 lcd0.init(&lcd0);
171 }
171 }
172
172
173 void bsp_spi_init()
173 void bsp_spi_init()
174 {
174 {
175
175
176 }
176 }
177
177
178
178
179 void bsp_iic_init()
179 void bsp_iic_init()
180 {
180 {
181 i2copenandconfig(i2c2,0,400000,PF0,PF1);
181 i2copenandconfig(i2c2,0,400000,PF0,PF1);
182 }
182 }
183
183
184 void bsp_SD_init()
184 void bsp_SD_init()
185 {
185 {
186
186
187 }
187 }
188
188
189 void vs10XXclearXCS(){}
189 void vs10XXclearXCS(){}
190 void vs10XXsetXCS(){}
190 void vs10XXsetXCS(){}
191 int vs10XXDREQ()
191 int vs10XXDREQ()
192 {
192 {
193 return 1;
193 return 1;
194 }
194 }
195
195
196
196
197 void bsppowersdcard(char onoff) //always ON
197 void bsppowersdcard(char onoff) //always ON
198 {
198 {
199
199
200 }
200 }
201
201
202 char bspsdcardpresent()
202 char bspsdcardpresent()
203 {
203 {
204 return 0;
204 return 0;
205 }
205 }
206
206
207 char bspsdcardwriteprotected()
207 char bspsdcardwriteprotected()
208 {
208 {
209 return 0;
209 return 0;
210 }
210 }
211
211
212 void bspsdcardselect(char YESNO)
212 void bspsdcardselect(char YESNO)
213 {
213 {
214
214
215 }
215 }
216
216
217
217
218 void bsp_lcd0_write_reg(uint32_t reg,uint32_t data)
218 void bsp_lcd0_write_reg(uint32_t reg,uint32_t data)
219 {
219 {
220 *lcd0_CMD=(uint16_t)reg;
220 *lcd0_CMD=(uint16_t)reg;
221 *lcd0_DATA=(uint16_t)data;
221 *lcd0_DATA=(uint16_t)data;
222 printf("Write to 0x%x 0x%x\n\r",reg,data);
223 *lcd0_CMD=(uint16_t)reg;
224 data = *lcd0_DATA;
225 printf("Readback to 0x%x 0x%x\n\r",reg,data);
222 }
226 }
223
227
224
228
225
229
226
230
@@ -1,68 +1,87
1 #include <stdio.h>
1 #include <stdio.h>
2 #include <fat32.h>
2 #include <fat32.h>
3 #include <gpio.h>
3 #include <gpio.h>
4 #include <uart.h>
4 #include <uart.h>
5 #include <stm32f4xx.h>
5 #include <stm32f4xx.h>
6 #include <bsp.h>
6 #include <bsp.h>
7 #include <i2c.h>
7 #include <i2c.h>
8 #include <CS43L22.h>
8 #include <CS43L22.h>
9 #include <ina226.h>
9 #include <ina226.h>
10
10
11
11
12 extern streamdevice* __opnfiles__[];
12 extern streamdevice* __opnfiles__[];
13
13
14 int main()
14 int main()
15 {
15 {
16 INA226_t ina5VSens,ina33VSens,ina15VSens;
16 INA226_t ina5VSens,ina33VSens,ina15VSens;
17 gpioset(PSU_DISABLE);
17 gpioset(PSU_DISABLE);
18 volatile int16_t* regtest=(volatile int16_t*)0x60000000;
18 volatile int16_t* regtest=(volatile int16_t*)0x60000000;
19 volatile int16_t* regtest2=(volatile int16_t*)(0x60000000+(1<<20));
19 volatile int16_t* regtest2=(volatile int16_t*)(0x60000000+(1<<20));
20 //ina226open(&ina5VSens,i2c2,INA226_MODE_SHUNT_VOLTAGE_CONTINUOUS|INA226_AVERAGES_16|INA226_BUS_CONV_8244us|INA226_SHUNT_CONV_8244us,0,0,15,1000000);
20 //ina226open(&ina5VSens,i2c2,INA226_MODE_SHUNT_VOLTAGE_CONTINUOUS|INA226_AVERAGES_16|INA226_BUS_CONV_8244us|INA226_SHUNT_CONV_8244us,0,0,15,1000000);
21 //ina226open(&ina15VSens,i2c2,INA226_MODE_SHUNT_VOLTAGE_CONTINUOUS|INA226_AVERAGES_16|INA226_BUS_CONV_8244us|INA226_SHUNT_CONV_8244us,1,0,15,1000000);
21 //ina226open(&ina15VSens,i2c2,INA226_MODE_SHUNT_VOLTAGE_CONTINUOUS|INA226_AVERAGES_16|INA226_BUS_CONV_8244us|INA226_SHUNT_CONV_8244us,1,0,15,1000000);
22 *regtest=(int16_t)0;
22 *regtest=(int16_t)0;
23 printf("LCD ID=%x\n\r",0xFFFF&(*regtest2));
23 printf("LCD ID=%x\n\r",0xFFFF&(*regtest2));
24 *regtest=(int16_t)ILI9328_REGISTER_ENTRYMODE;
24 *regtest=(int16_t)ILI9328_REGISTER_ENTRYMODE;
25 printf("ILI9328_REGISTER_ENTRYMODE=%x\n\r",0xFFFF&(*regtest2));
25 *regtest2=(int16_t)0x1008;
26 *regtest=(int16_t)0x20;
26 *regtest=(int16_t)0x20;
27 *regtest2=(int16_t)0x0;
27 *regtest2=(int16_t)0x0;
28 *regtest=(int16_t)0x21;
28 *regtest=(int16_t)0x21;
29 *regtest2=(int16_t)0x0;
29 *regtest2=(int16_t)0x0;
30 *regtest=(int16_t)0x22;
30 *regtest=(int16_t)0x22;
31 for(volatile int i=0;i<1024*64;i++)
31 for(volatile int i=0;i<32;i++)
32 {
32 {
33 *regtest=(int16_t)0x20;
33 *regtest2=(int16_t)i;
34 *regtest2=(int16_t)i;
35 *regtest=(int16_t)0x21;
36 *regtest2=(int16_t)0x0;
37 *regtest=(int16_t)0x22;
38 *regtest2=(int16_t)-i;
34 }
39 }
40 *regtest=(int16_t)ILI9328_REGISTER_ENTRYMODE;
41 *regtest2=(int16_t)0x1018;
42
43 for(volatile int i=0;i<32;i++)
44 {
45 *regtest=(int16_t)0x20;
46 *regtest2=(int16_t)i;
47 *regtest=(int16_t)0x21;
48 *regtest2=(int16_t)0x0;
49 *regtest=(int16_t)0x22;
50 int16_t test=*regtest2;
51 printf("DATA@%d=%x\n\r",i,0xFFFF&(*regtest2));
52 }
53
35 if(-1==ina226open(&ina33VSens,i2c2,INA226_MODE_SHUNT_VOLTAGE_CONTINUOUS|INA226_AVERAGES_16|INA226_BUS_CONV_8244us|INA226_SHUNT_CONV_8244us,0,1,15,1000000))
54 if(-1==ina226open(&ina33VSens,i2c2,INA226_MODE_SHUNT_VOLTAGE_CONTINUOUS|INA226_AVERAGES_16|INA226_BUS_CONV_8244us|INA226_SHUNT_CONV_8244us,0,1,15,1000000))
36 {
55 {
37 printf("Can't open 3.3V monitor\n\r");
56 printf("Can't open 3.3V monitor\n\r");
38 }
57 }
39
58
40 int current5V,current33V,current15V;
59 int current5V,current33V,current15V;
41 printf("\t5V\t3.3V\n\r");
60 printf("\t5V\t3.3V\n\r");
42 while(1)
61 while(1)
43 {
62 {
44 for(volatile int i=0;i<1024*1024;i++);
63 for(volatile int i=0;i<1024*1024;i++);
45 gpioset(LED1);
64 gpioset(LED1);
46 gpioclr(LED2);
65 gpioclr(LED2);
47 for(volatile int i=0;i<1024*1024;i++);
66 for(volatile int i=0;i<1024*1024;i++);
48 gpioclr(LED1);
67 gpioclr(LED1);
49 gpioset(LED2);
68 gpioset(LED2);
50 //current5V = ina226getCurrent(&ina5VSens);
69 //current5V = ina226getCurrent(&ina5VSens);
51 current33V = ina226getCurrent(&ina33VSens);
70 current33V = ina226getCurrent(&ina33VSens);
52 //current15V = ina226getCurrent(&ina15VSens);
71 //current15V = ina226getCurrent(&ina15VSens);
53 //current = ina226getReg(&Psens1,INA226_Current_Reg);
72 //current = ina226getReg(&Psens1,INA226_Current_Reg);
54 //printf("%duA %dmA\t%duA %dmA\n\r",current5V,current5V/1000,current33V,current33V/1000);
73 //printf("%duA %dmA\t%duA %dmA\n\r",current5V,current5V/1000,current33V,current33V/1000);
55 printf("%duA %dmA\n\r",current33V,current33V/1000);
74 printf("%duA %dmA\n\r",current33V,current33V/1000);
56 }
75 }
57 printf("hello world\n\r");
76 printf("hello world\n\r");
58 return 0;
77 return 0;
59 }
78 }
60
79
61
80
62
81
63
82
64
83
65
84
66
85
67
86
68
87
@@ -1,88 +1,89
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #ifndef ILI9328_H
22 #ifndef ILI9328_H
23 #define ILI9328_H
23 #define ILI9328_H
24
24
25 #include <uhandle.h>
25 #include <uhandle.h>
26 #include <genericLCD_Controler.h>
26 #include <genericLCD_Controler.h>
27 #include <stdint.h>
27
28
28 extern int ili9328init(struct LCD_t* LCD);
29 extern int ili9328init(struct LCD_t* LCD);
29 extern void ili9328paint_t(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height);
30 extern void ili9328paint_t(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height);
30
31
31 #define ILI9328_REGISTER_DRIVERCODEREAD ((uint16_t) 0x0000 )
32 #define ILI9328_REGISTER_DRIVERCODEREAD ((uint32_t) 0x0000 )
32 #define ILI9328_REGISTER_DRIVEROUTPUTCONTROL1 ((uint16_t) 0x0001 )
33 #define ILI9328_REGISTER_DRIVEROUTPUTCONTROL1 ((uint32_t) 0x0001 )
33 #define ILI9328_REGISTER_LCDDRIVINGCONTROL ((uint16_t) 0x0002 )
34 #define ILI9328_REGISTER_LCDDRIVINGCONTROL ((uint32_t) 0x0002 )
34 #define ILI9328_REGISTER_ENTRYMODE ((uint16_t) 0x0003 )
35 #define ILI9328_REGISTER_ENTRYMODE ((uint32_t) 0x0003 )
35 #define ILI9328_REGISTER_RESIZECONTROL ((uint16_t) 0x0004 )
36 #define ILI9328_REGISTER_RESIZECONTROL ((uint32_t) 0x0004 )
36 #define ILI9328_REGISTER_DISPLAYCONTROL1 ((uint16_t) 0x0007 )
37 #define ILI9328_REGISTER_DISPLAYCONTROL1 ((uint32_t) 0x0007 )
37 #define ILI9328_REGISTER_DISPLAYCONTROL2 ((uint16_t) 0x0008 )
38 #define ILI9328_REGISTER_DISPLAYCONTROL2 ((uint32_t) 0x0008 )
38 #define ILI9328_REGISTER_DISPLAYCONTROL3 ((uint16_t) 0x0009 )
39 #define ILI9328_REGISTER_DISPLAYCONTROL3 ((uint32_t) 0x0009 )
39 #define ILI9328_REGISTER_DISPLAYCONTROL4 ((uint16_t) 0x000A )
40 #define ILI9328_REGISTER_DISPLAYCONTROL4 ((uint32_t) 0x000A )
40 #define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL1 ((uint16_t) 0x000C )
41 #define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL1 ((uint32_t) 0x000C )
41 #define ILI9328_REGISTER_FRAMEMAKERPOSITION ((uint16_t) 0x000D )
42 #define ILI9328_REGISTER_FRAMEMAKERPOSITION ((uint32_t) 0x000D )
42 #define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL2 ((uint16_t) 0x000F )
43 #define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL2 ((uint32_t) 0x000F )
43 #define ILI9328_REGISTER_POWERCONTROL1 ((uint16_t) 0x0010 )
44 #define ILI9328_REGISTER_POWERCONTROL1 ((uint32_t) 0x0010 )
44 #define ILI9328_REGISTER_POWERCONTROL2 ((uint16_t) 0x0011 )
45 #define ILI9328_REGISTER_POWERCONTROL2 ((uint32_t) 0x0011 )
45 #define ILI9328_REGISTER_POWERCONTROL3 ((uint16_t) 0x0012 )
46 #define ILI9328_REGISTER_POWERCONTROL3 ((uint32_t) 0x0012 )
46 #define ILI9328_REGISTER_POWERCONTROL4 ((uint16_t) 0x0013 )
47 #define ILI9328_REGISTER_POWERCONTROL4 ((uint32_t) 0x0013 )
47 #define ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET ((uint16_t) 0x0020 )
48 #define ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET ((uint32_t) 0x0020 )
48 #define ILI9328_REGISTER_VERTICALGRAMADDRESSSET ((uint16_t) 0x0021 )
49 #define ILI9328_REGISTER_VERTICALGRAMADDRESSSET ((uint32_t) 0x0021 )
49 #define ILI9328_REGISTER_WRITEDATATOGRAM ((uint16_t) 0x0022 )
50 #define ILI9328_REGISTER_WRITEDATATOGRAM ((uint32_t) 0x0022 )
50 #define ILI9328_REGISTER_POWERCONTROL7 ((uint16_t) 0x0029 )
51 #define ILI9328_REGISTER_POWERCONTROL7 ((uint32_t) 0x0029 )
51 #define ILI9328_REGISTER_FRAMERATEANDCOLORCONTROL ((uint16_t) 0x002B )
52 #define ILI9328_REGISTER_FRAMERATEANDCOLORCONTROL ((uint32_t) 0x002B )
52 #define ILI9328_REGISTER_GAMMACONTROL1 ((uint16_t) 0x0030 )
53 #define ILI9328_REGISTER_GAMMACONTROL1 ((uint32_t) 0x0030 )
53 #define ILI9328_REGISTER_GAMMACONTROL2 ((uint16_t) 0x0031 )
54 #define ILI9328_REGISTER_GAMMACONTROL2 ((uint32_t) 0x0031 )
54 #define ILI9328_REGISTER_GAMMACONTROL3 ((uint16_t) 0x0032 )
55 #define ILI9328_REGISTER_GAMMACONTROL3 ((uint32_t) 0x0032 )
55 #define ILI9328_REGISTER_GAMMACONTROL4 ((uint16_t) 0x0035 )
56 #define ILI9328_REGISTER_GAMMACONTROL4 ((uint32_t) 0x0035 )
56 #define ILI9328_REGISTER_GAMMACONTROL5 ((uint16_t) 0x0036 )
57 #define ILI9328_REGISTER_GAMMACONTROL5 ((uint32_t) 0x0036 )
57 #define ILI9328_REGISTER_GAMMACONTROL6 ((uint16_t) 0x0037 )
58 #define ILI9328_REGISTER_GAMMACONTROL6 ((uint32_t) 0x0037 )
58 #define ILI9328_REGISTER_GAMMACONTROL7 ((uint16_t) 0x0038 )
59 #define ILI9328_REGISTER_GAMMACONTROL7 ((uint32_t) 0x0038 )
59 #define ILI9328_REGISTER_GAMMACONTROL8 ((uint16_t) 0x0039 )
60 #define ILI9328_REGISTER_GAMMACONTROL8 ((uint32_t) 0x0039 )
60 #define ILI9328_REGISTER_GAMMACONTROL9 ((uint16_t) 0x003C )
61 #define ILI9328_REGISTER_GAMMACONTROL9 ((uint32_t) 0x003C )
61 #define ILI9328_REGISTER_GAMMACONTROL10 ((uint16_t) 0x003D )
62 #define ILI9328_REGISTER_GAMMACONTROL10 ((uint32_t) 0x003D )
62 #define ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION ((uint16_t) 0x0050 )
63 #define ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION ((uint32_t) 0x0050 )
63 #define ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION ((uint16_t) 0x0051 )
64 #define ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION ((uint32_t) 0x0051 )
64 #define ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION ((uint16_t) 0x0052 )
65 #define ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION ((uint32_t) 0x0052 )
65 #define ILI9328_REGISTER_VERTICALADDRESSENDPOSITION ((uint16_t) 0x0053 )
66 #define ILI9328_REGISTER_VERTICALADDRESSENDPOSITION ((uint32_t) 0x0053 )
66 #define ILI9328_REGISTER_DRIVEROUTPUTCONTROL2 ((uint16_t) 0x0060 )
67 #define ILI9328_REGISTER_DRIVEROUTPUTCONTROL2 ((uint32_t) 0x0060 )
67 #define ILI9328_REGISTER_BASEIMAGEDISPLAYCONTROL ((uint16_t) 0x0061 )
68 #define ILI9328_REGISTER_BASEIMAGEDISPLAYCONTROL ((uint32_t) 0x0061 )
68 #define ILI9328_REGISTER_VERTICALSCROLLCONTROL ((uint16_t) 0x006A )
69 #define ILI9328_REGISTER_VERTICALSCROLLCONTROL ((uint32_t) 0x006A )
69 #define ILI9328_REGISTER_PARTIALIMAGE1DISPLAYPOSITION ((uint16_t) 0x0080 )
70 #define ILI9328_REGISTER_PARTIALIMAGE1DISPLAYPOSITION ((uint32_t) 0x0080 )
70 #define ILI9328_REGISTER_PARTIALIMAGE1AREASTARTLINE ((uint16_t) 0x0081 )
71 #define ILI9328_REGISTER_PARTIALIMAGE1AREASTARTLINE ((uint32_t) 0x0081 )
71 #define ILI9328_REGISTER_PARTIALIMAGE1AREAENDLINE ((uint16_t) 0x0082 )
72 #define ILI9328_REGISTER_PARTIALIMAGE1AREAENDLINE ((uint32_t) 0x0082 )
72 #define ILI9328_REGISTER_PARTIALIMAGE2DISPLAYPOSITION ((uint16_t) 0x0083 )
73 #define ILI9328_REGISTER_PARTIALIMAGE2DISPLAYPOSITION ((uint32_t) 0x0083 )
73 #define ILI9328_REGISTER_PARTIALIMAGE2AREASTARTLINE ((uint16_t) 0x0084 )
74 #define ILI9328_REGISTER_PARTIALIMAGE2AREASTARTLINE ((uint32_t) 0x0084 )
74 #define ILI9328_REGISTER_PARTIALIMAGE2AREAENDLINE ((uint16_t) 0x0085 )
75 #define ILI9328_REGISTER_PARTIALIMAGE2AREAENDLINE ((uint32_t) 0x0085 )
75 #define ILI9328_REGISTER_PANELINTERFACECONTROL1 ((uint16_t) 0x0090 )
76 #define ILI9328_REGISTER_PANELINTERFACECONTROL1 ((uint32_t) 0x0090 )
76 #define ILI9328_REGISTER_PANELINTERFACECONTROL2 ((uint16_t) 0x0092 )
77 #define ILI9328_REGISTER_PANELINTERFACECONTROL2 ((uint32_t) 0x0092 )
77 #define ILI9328_REGISTER_PANELINTERFACECONTROL4 ((uint16_t) 0x0095 )
78 #define ILI9328_REGISTER_PANELINTERFACECONTROL4 ((uint32_t) 0x0095 )
78 #define ILI9328_REGISTER_OTPVCMPROGRAMMINGCONTROL ((uint16_t) 0x00A1 )
79 #define ILI9328_REGISTER_OTPVCMPROGRAMMINGCONTROL ((uint32_t) 0x00A1 )
79 #define ILI9328_REGISTER_OTPVCMSTATUSANDENABLE ((uint16_t) 0x00A2 )
80 #define ILI9328_REGISTER_OTPVCMSTATUSANDENABLE ((uint32_t) 0x00A2 )
80 #define ILI9328_REGISTER_OTPPROGRAMMINGIDKEY ((uint16_t) 0x00A5 )
81 #define ILI9328_REGISTER_OTPPROGRAMMINGIDKEY ((uint32_t) 0x00A5 )
81
82
82
83
83 #endif
84 #endif
84
85
85
86
86
87
87
88
88
89
@@ -1,90 +1,90
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #include <ili9328.h>
22 #include <ili9328.h>
23 #include <stdio.h>
23 #include <stdio.h>
24 #include <stddef.h>
24 #include <stddef.h>
25
25
26 #define _delay_(del) for(volatile int _d_e_l_=0;_d_e_l_<(del);_d_e_l_++);
26 #define _delay_(del) for(volatile int _d_e_l_=0;_d_e_l_<(del);_d_e_l_++);
27
27
28 void ili9328paint_t(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height)
28 void ili9328paint_t(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height)
29 {
29 {
30 if((LCD!=NULL) && (LCD->interface!=NULL) && (LCD->interface->writeGRAM!=NULL) && (LCD->width<(Xpos+Width)) && (LCD->height<(Ypos+Height)))
30 if((LCD!=NULL) && (LCD->interface!=NULL) && (LCD->interface->writeGRAM!=NULL) && (LCD->width<(Xpos+Width)) && (LCD->height<(Ypos+Height)))
31 {
31 {
32 uint16_t* castedBuff=(uint16_t*)buffer;
32 uint16_t* castedBuff=(uint16_t*)buffer;
33 for(int i=0;i<Height;i++)
33 for(int i=0;i<Height;i++)
34 {
34 {
35 LCD->interface->writeGRAM(castedBuff+(i*Width),Width);
35 LCD->interface->writeGRAM(castedBuff+(i*Width),Width);
36 }
36 }
37 }
37 }
38 }
38 }
39
39
40 int ili9328init(struct LCD_t* LCD)
40 int ili9328init(struct LCD_t* LCD)
41 {
41 {
42 if((LCD!=NULL) && (LCD->interface!=NULL) && (LCD->interface->writereg!=NULL))
42 if((LCD!=NULL) && (LCD->interface!=NULL) && (LCD->interface->writereg!=NULL))
43 {
43 {
44 LCD->interface->writereg(ILI9328_REGISTER_DRIVEROUTPUTCONTROL1, 0x0100); // Driver Output Control Register (R01h)
44 LCD->interface->writereg(ILI9328_REGISTER_DRIVEROUTPUTCONTROL1, 0x0100); // Driver Output Control Register (R01h)
45 LCD->interface->writereg(ILI9328_REGISTER_LCDDRIVINGCONTROL, 0x0700); // LCD Driving Waveform Control (R02h)
45 LCD->interface->writereg(ILI9328_REGISTER_LCDDRIVINGCONTROL, 0x0700); // LCD Driving Waveform Control (R02h)
46 LCD->interface->writereg(ILI9328_REGISTER_ENTRYMODE, 0x1030); // Entry Mode (R03h)
46 LCD->interface->writereg(ILI9328_REGISTER_ENTRYMODE, 0x1030); // Entry Mode (R03h)
47 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL2, 0x0302);
47 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL2, 0x0302);
48 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL3, 0x0000);
48 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL3, 0x0000);
49 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL4, 0x0000); // Fmark On
49 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL4, 0x0000); // Fmark On
50 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL1, 0x0000); // Power Control 1 (R10h)
50 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL1, 0x0000); // Power Control 1 (R10h)
51 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL2, 0x0007); // Power Control 2 (R11h)
51 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL2, 0x0007); // Power Control 2 (R11h)
52 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL3, 0x0000); // Power Control 3 (R12h)
52 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL3, 0x0000); // Power Control 3 (R12h)
53 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL4, 0x0000); // Power Control 4 (R13h)
53 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL4, 0x0000); // Power Control 4 (R13h)
54 _delay_(10000000);
54 _delay_(1000000);
55 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL1, 0x14B0); // Power Control 1 (R10h)
55 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL1, 0x14B0); // Power Control 1 (R10h)
56 _delay_(5000000);
56 _delay_(500000);
57 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL2, 0x0007); // Power Control 2 (R11h)
57 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL2, 0x0007); // Power Control 2 (R11h)
58 _delay_(5000000);
58 _delay_(500000);
59 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL3, 0x008E); // Power Control 3 (R12h)
59 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL3, 0x008E); // Power Control 3 (R12h)
60 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL4, 0x0C00); // Power Control 4 (R13h)
60 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL4, 0x0C00); // Power Control 4 (R13h)
61 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL7, 0x0015); // NVM read data 2 (R29h)
61 LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL7, 0x0015); // NVM read data 2 (R29h)
62 _delay_(5000000);
62 _delay_(500000);
63 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL1, 0x0000); // Gamma Control 1
63 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL1, 0x0000); // Gamma Control 1
64 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL2, 0x0107); // Gamma Control 2
64 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL2, 0x0107); // Gamma Control 2
65 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL3, 0x0000); // Gamma Control 3
65 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL3, 0x0000); // Gamma Control 3
66 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL4, 0x0203); // Gamma Control 4
66 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL4, 0x0203); // Gamma Control 4
67 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL5, 0x0402); // Gamma Control 5
67 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL5, 0x0402); // Gamma Control 5
68 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL6, 0x0000); // Gamma Control 6
68 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL6, 0x0000); // Gamma Control 6
69 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL7, 0x0207); // Gamma Control 7
69 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL7, 0x0207); // Gamma Control 7
70 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL8, 0x0000); // Gamma Control 8
70 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL8, 0x0000); // Gamma Control 8
71 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL9, 0x0203); // Gamma Control 9
71 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL9, 0x0203); // Gamma Control 9
72 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL10, 0x0403); // Gamma Control 10
72 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL10, 0x0403); // Gamma Control 10
73 LCD->interface->writereg(ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION, 0x0000); // Window Horizontal RAM Address Start (R50h)
73 LCD->interface->writereg(ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION, 0x0000); // Window Horizontal RAM Address Start (R50h)
74 LCD->interface->writereg(ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION, 240 - 1); // Window Horizontal RAM Address End (R51h)
74 LCD->interface->writereg(ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION, 240 - 1); // Window Horizontal RAM Address End (R51h)
75 LCD->interface->writereg(ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION, 0X0000); // Window Vertical RAM Address Start (R52h)
75 LCD->interface->writereg(ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION, 0X0000); // Window Vertical RAM Address Start (R52h)
76 LCD->interface->writereg(ILI9328_REGISTER_VERTICALADDRESSENDPOSITION, 320 - 1); // Window Vertical RAM Address End (R53h)
76 LCD->interface->writereg(ILI9328_REGISTER_VERTICALADDRESSENDPOSITION, 320 - 1); // Window Vertical RAM Address End (R53h)
77 LCD->interface->writereg(ILI9328_REGISTER_DRIVEROUTPUTCONTROL2, 0xa700); // Driver Output Control (R60h)
77 LCD->interface->writereg(ILI9328_REGISTER_DRIVEROUTPUTCONTROL2, 0xa700); // Driver Output Control (R60h)
78 LCD->interface->writereg(ILI9328_REGISTER_BASEIMAGEDISPLAYCONTROL, 0x0003); // Driver Output Control (R61h) - enable VLE
78 LCD->interface->writereg(ILI9328_REGISTER_BASEIMAGEDISPLAYCONTROL, 0x0003); // Driver Output Control (R61h) - enable VLE
79 LCD->interface->writereg(ILI9328_REGISTER_PANELINTERFACECONTROL1, 0X0010); // Panel Interface Control 1 (R90h)
79 LCD->interface->writereg(ILI9328_REGISTER_PANELINTERFACECONTROL1, 0X0010); // Panel Interface Control 1 (R90h)
80 // Display On
80 // Display On
81 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL1, 0x0133); // Display Control (R07h)
81 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL1, 0x0133); // Display Control (R07h)
82 _delay_(5000000);
82 _delay_(500000);
83 LCD->interface->writereg(ILI9328_REGISTER_ENTRYMODE, 0x1030);
83 LCD->interface->writereg(ILI9328_REGISTER_ENTRYMODE, 0x1030);
84 LCD->interface->writereg(ILI9328_REGISTER_DRIVEROUTPUTCONTROL1, 0x0100);
84 LCD->interface->writereg(ILI9328_REGISTER_DRIVEROUTPUTCONTROL1, 0x0100);
85 //ili9328WriteCmd(ILI9328_REGISTER_WRITEDATATOGRAM);
85 //ili9328WriteCmd(ILI9328_REGISTER_WRITEDATATOGRAM);
86 }
86 }
87 return 0;
87 return 0;
88 }
88 }
89
89
90
90
General Comments 0
You need to be logged in to leave comments. Login now