MCF5329 LCDC as GPIO

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

MCF5329 LCDC as GPIO

跳至解决方案
1,315 次查看
JD1z
Contributor II

Hi

 

I want to use the LCDC LD0 and LD1 as GPIO output pins.

From reading the 5329 ref manual, they default to GPIO and configured as inputs..

 

But I have configured it for GPIO anyway. I can set and clear  LD0 but

can't seem to do anything with LD1.

 

I have used the following code to configure and drive.

 

VMCF5329_GPIO_STRUCT_PTR gpio = &((VMCF5329_STRUCT_PTR)_PSP_GET_IPSBAR())->GPIO;

gpio->PAR_LCDDATA = 0; //configure as GPIO

 

gpio->PDDR_LCDDATAL = 0x03; //LD0 and LD1 as output

 

gpio->PPDSDR_LCDDATAL = MCF5329_GPIO_PPDSDR_x0 || MCF5329_GPIO_PPDSDR_x1;  //to set LD0 & LD1

gpio->PCLRR_LCDDATAL = MCF5329_GPIO_PCLRR_x0 || MCF5329_GPIO_PCLRR_x1;  // to clear LD0 & LD1

 

I have also tried

gpio->PODR_LCDDATAL = 0x0;

gpio->PODR_LCDDATAL = 0x3;

 

I can see LD0 changing state but not LD1. Not sure what I doing wrong or missed anything out.

Note : I have not done anything with drive strength.

 

Thanks

标签 (1)
0 项奖励
回复
1 解答
1,104 次查看
JD1z
Contributor II

Hi Tom

Just tried the addresses rather than the macros. It still behaves the same way.

Added a line to show the current status of the port, from this I could see LD1 was always 0.

I checked the modifications carried out and found that LD1 was shorted to gnd. Once

this was sorted all worked as expected.

Thanks

Jaswinder

在原帖中查看解决方案

0 项奖励
回复
2 回复数
1,104 次查看
TomE
Specialist II

From the manual that should work. I have an MCF5329 here on a board, connected to a video chip. It doesn't have LD0 connected, but it does have LD1 connected to the video, and I can see the effect of writing LD1 as a GPIO. I'm using GDB through  a P&E Multilink:

(gdb) x/b 0xfc0a405d          # LCD Pin Assignment Register
0xfc0a405d:     0xff             # Set to LCDC
(gdb) set *(uint8_t *)0xfc0a405d = 0xfc # LCD Pin Assignment Register, set LD0-LD7 as GPIO
(gdb) set *(uint8_t *)0xfc0a4023 = 0x03 # LCD PDDR, LD0, LD1 as output.
(gdb) set *(uint8_t *)0xfc0a400f = 0x00 # All pins low
(gdb) set *(uint8_t *)0xfc0a400f = 0x02 # LD1 high

I'd check that the macros you're using are generating the right addresses.


I'd also read back the registers in a debugger - and set them in the debugger too.

It may be a hardware problem. Change LD1 to an input and see if you can send signals into that pin.

Tom

1,105 次查看
JD1z
Contributor II

Hi Tom

Just tried the addresses rather than the macros. It still behaves the same way.

Added a line to show the current status of the port, from this I could see LD1 was always 0.

I checked the modifications carried out and found that LD1 was shorted to gnd. Once

this was sorted all worked as expected.

Thanks

Jaswinder

0 项奖励
回复