How can i use two UARTs in PSoC4 Cy8C4247LQI-BL483

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

cross mob
Anonymous
Not applicable

Hi,

   

i need two UARTS, one for a debug log on the PC and the other for communication with another uC.

   

When i put one UART in my Top Design, everything works, but when i put another UART block in ther an compile i get the following error:

   

--------------- Rebuild Started: 04/28/2016 15:07:19 Project: emBrace_BLE2UART, Configuration: ARM GCC 4.9-2015-q1-update Debug ---------------
Deleting file ".\emBrace_BLE2UART.rpt"
cydsfit.exe -.appdatapath "C:\Users\Patrick\AppData\Local\Cypress Semiconductor\PSoC Creator\3.3" -.fdsnotice -.fdswarpdepfile=warp_dependencies.txt -.fdselabdepfile=elab_dependencies.txt -.fdsbldfile=generated_files.txt -p "C:\Users\Patrick\Documents\PSoC Creator\UART2BLE\emBrace_BLE2UART.cydsn\emBrace_BLE2UART.cyprj" -d CY8C4247LQI-BL483 -s "C:\Users\Patrick\Documents\PSoC Creator\UART2BLE\emBrace_BLE2UART.cydsn\Generated_Source\PSoC4" -- -yv2 -q10 -ygs -o2 -v3 -.fftcfgtype=LE
Elaborating Design...
HDL Generation ...
Synthesis ...
Place and Route ...
Tech mapping ...
Error: mpr.M0014: Resource limit: Maximum number of Macrocells exceeded (max=32, needed=48). (App=cydsfit)
Error: mpr.M0014: Resource limit: Maximum number of Unique P-terms exceeded (max=64, needed=88). (App=cydsfit)
Error: mpr.M0014: Resource limit: Maximum number of Datapath Cells exceeded (max=4, needed=6). (App=cydsfit)
Error: mpr.M0014: Resource limit: Maximum number of Status Cells exceeded (max=4, needed=6). (App=cydsfit)
Dependency Generation ...
Clean Temporary Files ...
Error: cdf.M0005: CyDsFit aborted due to errors, please address all errors and rerun CyDsFit. (App=cydsfit)
--------------- Rebuild Failed: 04/28/2016 15:07:28 ---------------

   

I thought the PSoC4 has two UARTs, can you please help me ? I need two UARTs!

   

Pat

0 Likes
1 Solution
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

What makes you think that without any OS in the PSoC the function DBG_PRINTF() uses the UART_DEBUG component. (WHY CAPITAL LETTERS???)

   

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

View solution in original post

0 Likes
4 Replies
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

There are two kinds uf UARTS: USB based (Free pin routing) and SCB based (Pins are dedicated).

   

Use an SCB based for debugging. This is usually connected to the USB-UART bridge in the Kits having got a Kitprog.

   

Use the UDB based for your "normal" project-

   

 

   

Bob

0 Likes
Anonymous
Not applicable

Hi,

   

thanks for the answer. RIght now i modified the project and use a "real" UART for the communication to the other uC and a SCB UART for the USB debug on Pins P1[4] and P1[5].

   

Unfortunately its still not working. I get no signal from the SCB UART to my FTDI USB debugger. It works however with the BLE_AlertNotification example which also uses a SCB UART.

   

Somehow i must have missed a configuration step in my project. I just dropped the SCB component to the TopDesign and configured it for UART with 115200 baud. I named it UART_DEBUG. In clocks i see that its attached to the HFCLCK.

   

I call

   

UART_DEBUG_Start();
    
    DBG_PRINTF("BLE Heart Rate Sensor Example Project \r\n");

   

but nothing happens.

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

What makes you think that without any OS in the PSoC the function DBG_PRINTF() uses the UART_DEBUG component. (WHY CAPITAL LETTERS???)

   

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

0 Likes
Anonymous
Not applicable

Hi Bob,

   

project is working like a charm now, had to increase the Heap size in the memory manager.

   

Whay capital letters? Because its a redefinition of the printf function and define are in capital letters. Its exactly analogous to the debug.h file of Cypress' "BLE_Heart_Rate_Sensor" example project. Actual selection of the correct UART is done by tweaking the _write function in the debug.c file to use the correct UART.

   

Anyways, it was just the small Heap that crashed the program on the printf() call. I could solve it after a while with PSoC creator. Great IDE btw!

   

Regards,

   

Patrick