PSoC BLE + SPI Master Code example

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

cross mob
Anonymous
Not applicable

This is my 1st project using PSoC BLE, I need help setting up the SPI code.. can't find any SPI example code for the PSoC BLE.

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

Welcome in the forum, Richard.

   

Use the SPI examples for PSoC4, the essentials are the same.

   

 

   

Bob

0 Likes
Anonymous
Not applicable

Thanks Bob, 

   

The following seems to work.. 

   

SPI_1_Start();

   

SPI_1_SpiUartWriteTxData(0xa5);

   

Setting up the CYBLE 022001-00 21 SMT for SPI on the following ports:

   

P1.6 SPI_1:ss0_m

   

P0.4 SPI_1:mosi

   

P0.5 SPI_1:miso

   

P1.7 SPI_1: sclk

   

I get the following error when assigning the UART to P1.4/5 rx/tx  as per the PCB !  ( but no errors when assigned to p3.4/5 )

   

Digital Placement ...
Error: plm.M0046: 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.
Error: plm.M0046: E2055: An error occurred during placement of the design.
Error: plm.M0046: "D:\Program Files (x86)\Cypress\PSoC Creator\3.3\PSoC Creator\bin/sjplacer.exe" failed (0x00000001)
Dependency Generation ...
Clean Temporary Files ...
Error: cdf.M0005: CyDsFit aborted due to errors, please address all errors and rerun CyDsFit. (App=cydsfit)
--------------- Build Failed: 12/28/2015 10:00:24 ---------------

0 Likes
Anonymous
Not applicable

Also there is a workaround a bit too deep at the moment !! below :

   

 

   

The placer is not able to place all of the carry chains without backtracking. It fills one UDB bank to 15/16 and the other to 7/8 and cannot place the final 2-datapath chain. As a workaround, add a control file to the TopDesign component (in Workspace Explorer's Components tab) with the following lines: ATTRIBUTE placement_force OF \Timer_ADPActiveTime:TimerUDB:sT16:timerdp:u0\ : LABEL IS "U(2,0)"; ATTRIBUTE placement_force OF \Timer_OutputPeriod:TimerUDB:sT24:timerdp:u0\ : LABEL IS "U(3,1)"; ATTRIBUTE placement_force OF \Timer_OutputActiveTime:TimerUDB:sT24:timerdp:u0\ : LABEL IS "U(0,1)"; This will fill the datapaths in the second UDB bank and allow the placer to assign the remaining datapaths.

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

Consider to 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.

   

PSoC4 port 4 and higher have limited routing capabilities. Use fixed-function components with dedicated pins preferably from UDB components which are more versatile.

   

 

   

Bob

   

 

   

Bob

0 Likes
Anonymous
Not applicable

Thanks for your help  Bob,  I raised a ticket with tech support .. all sorted now..

   

Best,

   

Richard

0 Likes