Toggle GPIO via DMA (OSD)

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
didi_4657011
Level 1
Level 1
10 sign-ins 5 sign-ins First reply posted

I trying to make OSB (on screen display) for analog video (NTSC format) with 640X480 pixels resolution.
To synchronize to the external video i using external board to catch the sync pulses from analog video, every sync type connected to GPIO and to ISR.
The horizontal sync pulse is active once a 64uSec, so once 64uSec trigger the DMA programmatically and send the data to Control register which connected GPIO
(the GPIO connected to the video line via diode).
The GPIO rise the voltage (distortion) at specific point of time and it make the pixel white. With this method i can draw on the analog video.

At LP5 (CY8C5888LTI-LP097) -----
This method work and stable, but i facing two main problems:
1)At max clock (PLL at 80Mhz) i can reach max 464 pixels per line (for each 52uSec of visible line 464 distortions on the video line) - need to have 640 distortions for 52uSec piece of time.
2)I can't reach 640X480 buffer size (640X480 /1024 =300KB ) - i use Byte per pixel (CY8C5888LTI-LP097 is max 64KB SRAM).

At Posc 6 (CY8C6347BZI-BLD53) -----
To overcome LP5 problems i try to use Posc 6 (CY8C6347BZI-BLD53) but i stuck with the DAM configurations, i see on the oscilloscope the Bytes i try to send, but
the rate is very slaw (8 Bytes per 500uSec), according to the datasheet the DMA use Clk_Slow , but i configured it to 100Mhz.

1-What could be the problem with the configuration?
2-It seems that the Bytes are not stable at this slow rate (although using an old oscilloscope..)
3-At lp5 the DMA cannot access to all the SRAM, is it the same with PSOC6?
4-Is there any way to send bit by bit instead of byte?

0 Likes
1 Solution
RodolfoGL
Employee
Employee
250 solutions authored 250 sign-ins 5 comments on KBA

You can reach much faster rate if you use a shift register to drive the pin. You can still use the DMA to write to the Shift register FIFO, and let the shift register to serialize a byte to a bit. 

You can implement a shift register using the UDBs. Or you can simply use the SCB in SPI Master mode TX FIFO as a shift register.

View solution in original post

0 Likes
1 Reply
RodolfoGL
Employee
Employee
250 solutions authored 250 sign-ins 5 comments on KBA

You can reach much faster rate if you use a shift register to drive the pin. You can still use the DMA to write to the Shift register FIFO, and let the shift register to serialize a byte to a bit. 

You can implement a shift register using the UDBs. Or you can simply use the SCB in SPI Master mode TX FIFO as a shift register.

0 Likes