- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I am using CYC8CKIT-048 PSOC Analog Coprocessor Pioneer Kit and am experiencing issues while using both UART and DMA block in the same project.
I need to use the digital data sent from a PC and received via UART to determine which frequency sine wave should be generated (basically I need to make a FSK modulator).
I was trying to do that by connecting UART_tx to the switch input of a TCPWM by using one pin configured as digital output for UART and one as digital input for PWM and connecting them (by wire). I was planning to use the PWM as a clock divider (since this PSOC doesn't have a digital mux, or I can't seem to find it?) which counts to different values depending on the value of switch input.
Then i would connect PWM line output to DMA trigger input, and DMA would transfer data from a sine LUT table to VDAC's internal register and route VDAC to an output pin.
But when i try to build the project I get an error saying that the placer is unable to find a valid placement for pins and fixed-function blocks.
Is there a way to do this the way I imagined, or am I missing something?
Thanks
Here is a copy of placer.txt file:
Phase 4
E2809: Unable to find a valid placement for pins and fixed-function blocks. See the Digital Placement's Detailed placement messages section in the report file for details.
I2722: The following instances could not be placed:
\PWM_1:cy_m0s8_tcpwm_1\ (0 location(s))
ClockBlock (1 location(s): F(Clock,0))
\UART_1:SCB\ (3 location(s): F(SCB,0) F(SCB,1) F(SCB,2))
Fixed function block and pin placement:
P1[1]: Pin_2(0)
F(HALFUAB,0): \VDAC_1:UAB:halfuab\
F(p4prefcell,0): CyDesignWideVoltageReference
P4[1]: Pin_3(0)
F(CLK_GEN,0): ClockGenBlock
F(OA,2): \VDAC_1:OUTBUFFER:cy_psoc4_abuf\
P0[4]: Pin_1(0)
P1[2]: Pin_4(0)
E2055: An error occurred during placement of the design.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Can you please post your complete project so that we all can have a look at all of your settings. To do so, use
Creator->File->Create Workspace Bundle (minimal)
and attach the resulting file.
Bob
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Your UART_! component is not for the selected chip. Delete the UART and place a new one onto the topdesign.
Bob
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
That doesn't fix anything. Tried that in the project i already attached and the one I started from scratch (which I will attach here), just laid the components and tried to build it. Always gives back the same error. I tried updating components but it doesn't help. Once i remove the DMA block project can build successfully.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks, now it works.
What did you change to make it work?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The DMA trigger must be connected to a compatible signal, I choose PWM ov and not the PWM line signal.
Bob
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
so I kind of went with another way of implementing the modulator, but now i am wondering how does DMA transfer to component_block (for ex. UART or IDAC or VDAC) work and basically how to set up DMA for a specific task?
Let's say i have a PWM which generates a pulse on overflow, and I am using that pulse as a trigger for a DMA transfer. (project PWM_DMA_trigger)
DMA would be transferring bytes from an array in memory to UART and then UART would send that data to PC and I would see it displayed on the terminal.
But DMA doesn't transfer anything (as far as I can see), even when I trigger it manually via DMA_Trigger();
DMA is initialized via DMA_Start( (void*)array, (void*) UART_TX_FIFO_WR_PTR );
Since there is basically no information (or examples) about DMA to UART_tx for my PSoC kit in both DMA and UART documentation, and DMA wizard is not available for it, I am wondering how should I initialize the DMA?
And here is another project using 2 IDAC7s (named 2PWM), where both DMA's tasks would be to transfer data from an array to IDAC on an overflow pulse from a PWM.
I could probably solve it with interrupts, but that would take too much time since I'm a beginner.
Thanks