PSoC™ 6 Forum Discussions
Dear community,
for a design I am working on, I try to figure out how to use a 2.4 Inch-Resistive-Touch-TFT-display with Psoc 63 (CY8CKIT-062-BLE Kit) in Psoc Creator 4.3.
The display I am using at the moment is a MCUfriend-Arduino-Board bought from the internet. Thanks to these awesome links
https://iotexpert.com/psoc-6-segger-emwin-mcufriend-2-4-tft-part-2
https://github.com/iotexpert/MCUFriend
it was very easy to set up and run the example CE223726 on my MCUfriend display. Aiming now to use the Touch Capability of the display, I figured out that the Resistive Touch Component with support to emWin is just available for Psoc 1/3/5. Therefore I ask myself, if there are technical reasons or licence issues, why this Component is not available in PsoC 6 (Psoc 4)? Is there any example code how to use a TFT touch display with emWin and Psoc 6 (Psoc 4)?
Thanks in advance,
Marcel
Show LessHello guys,
I'm a bit new to this, sorry in advance if I have some missing information or concepts.
I have been trying a project about heart rate monitoring with PPG signals. Apart the PSoC I have another pre-built (by my uni) kit with an analogue module that contains filters like TIA, HPF, LPF and INV AMP with some Potentiometers, Resistors and so on; a led driver (which control RED, GREEN, IR leds) and I was told that the chip doesn't need any kind of configuration and also that I need to interface the INV AMP output to the adc to get the PPG signal (like a sin function).
From what I have understood after searching the web, the heart rate is calculated as: (PPG interval peaks in 10 seconds)x6 to get heart beat per minute (BPM). I cannot figure out how can I get this peaks from my ADC and how should I configure my ADC for this kind of signal so I can get the output through UART?
My second question is about the LED driver (TLC5925), which we should interface it and set the correct currents for the correct LED wavelengths, up to now I haven't found much on the internet regarding this. Should it be represented like digital pins or some other component?
Thank you in advance for any kind of help!
Show Less
Hi all,
I have a CY8CKIT-062-WIFI-BT dev kit and recently have come across a persistent annoying error even during compilation of a sample application such as snip.scan. While making sure other processes and applications weren't running that would use OpenOCD drivers, the console output during a build of snip.scan still complains. Here is a sample of the latest output. Any edits I've attempted to make would only be on the snip.c source file which is only adding print statements.
"**** OpenOCD failed - ensure you have installed the driver from the drivers directory, and that the debugger is not running **** In Linux this may be due to USB access permissions. In a virtual machine it may be due to USB passthrough settings. Check in the task list that another OpenOCD process is not running. Check that you have the correct target and JTAG device plugged in. ****"
Resetting target
Target running
Build complete
Please advise - this hasn't happened before when I worked on this devkit but I feel I might be overlooking something with my build targets ("snip.scan-CY8CKIT_062 download_apps download run" and " snip.scan-CY8CKIT_062 download run ") or setup of the devkit. Very rarely, the build will complete without this error. WICED version is 6.6
I opened Modus Toolbox Eclipse IDE in a new workspace then selected "New Application" then expanded the PSoC 6 BSPs and selected CY8CKIT-064B0S2-4343W.
I'm sure there was a "Secure Blinky LED FreeRTOS" example there recently.
Was it removed?
It was working for me before.
I found "Hello World" and Blinky programs to be good starting examples. Is there an alternative to "Secure Blinky LED FreeRTOS"?
Greg
Show LessI'm just starting to look at PSoC 6 after working with 4 for quite a while, and I can't get past this first issue.
There is another post about this, along with a comment saying "we don't have this issue, it's likely to do with the pin configuration."
So I've created a new empty project in PSoC Creator, for a CY8C6247BZI-D54 ... I've put a single output pin on the schematic, and selected "Single-Sync" ... I've done nothing else and I get that warning.
I've experimented with different drive settings etc, but I can't get it to go away.
Similarly if I change it to an input pin (with hardware connection, and attach it to something like a status register) ... it's fine without sync, but with single or double-sync I get the same warning (well, InSyncNeeded.)
So I don't understand how everyone else isn't seeing this?
The family datasheets for the 4200L and the 62 family both contain the same section detailing the sync capability (PA Data Input Logic/PA Data Output Logic) ... so it's not a capability problem??
What am I missing?
Show LessHello,
In my project I have Toshiba flash connected to PSOC6-43012 via SPI. To read device id of flash, i have 2 transmit 2 bytes command. And device id to be received is 3 bytes. If I use size of transmit buffer as 2 bytes, I am not getting the device id. And if I use the size of transmit buffer equal to that of receive buffer, 3 in this case , we are getting extra bytes in the beginning (extra 0's). I am using low level API's Cy_SCB_SPI_WriteArray() and Cy_SCB_SPI_ReadArray()
Is it mandatory that size of transmit and receive buffer should be equal? Also, can you please tell us the reason behind the extra bytes we are getting?
Thanks,
Binsy M S
Show LessHello community,
I am working with the CYBLE-416045-02 chip (with CY8CPROTO-063-BLE KIT) but i am declaring a function in my .h file as the following:
uint8_t WriteCommandPacket(uint16_t cmd);
and the user can send differents commands:
#define CMD_WATER (0x3608)
#define CMD_ALCOHOL (0x3615)
#define CMD_STOP_MEASUREMENT (0x3FF9)
#define CMD_SOFT_RESET (0x0006)
#define CMD_READ_I (0x367C)
#define CMD_READ_II (0xE102)
it is why i am using the uint16_t type to send this command. But the PSoC Creattor 4.4 is telling me the following error:
masterI2C.h:68:9: error: conflicting types for 'WriteCommandPacket'
uint8_t WriteCommandPacket(uint16_t cmd);
The strage thing that i can use this type inside of the functions
Can someone help me out?
Regards
David!
Show Less
Hi there,
My problem is I need to drive a VGA monitor with a PSoC6. My solution is to use DMA transfers from an image buffer to a GPIO Port. The GPIO Port is connected to an external high speed DAC to convert the digital 8 bit signal into an analog signal for the monitor.
I've achieved this reasonably well with my PSoC5 LP, PSoC Creator, and the UDB Control Register. The PSoC5 LP would DMA transfer byte-by-byte to the control register block, and this block would be connected in the schematic editor to a bunch of GPIO pins. The pins would update their state at a fixed frequency and according to the value of the incoming DMA byte. This worked very fast and without problems.
However, I've now switched to the PSoC6 MCU, specifically I have the CY8CPROTO-062-4343W (2MB Flash). This board is not supported in PSoC Creator as far as I can tell (I have no idea why, but it is what it is). Since I'm now using Modus Toolbox, I can't create the UDB Control Register I did with the PSOC5. Instead, I looked at the TRM manual and found out you can directly write to the memory mapped GPIO Ports and update their state that way.
I figured out this is how to get the address of the port:
uint32_t* port9 = (uint32_t*) Cy_GPIO_PortToAddr(9);
and you can write an arbitrary byte to it like:
*port9 = 0xff;
After figuring this out I was relieved, because I thought I could now just do the same thing: set-up a continuous byte-to-word DMA transfer from my source buffer to this peripheral address. I looked at DMA examples for PSoC6 and managed to get it working. Here are some relevant snippets:
// Configure descriptor source. Buffer_a = framebuffer to read from.
Cy_DMAC_Descriptor_SetSrcAddress(&RDMA_Descriptor_0, (uint32_t *) buffer_a);
Cy_DMAC_Descriptor_SetDstAddress(&RDMA_Descriptor_0, (uint32_t *) port9);
// Standard Channel Config
Cy_DMAC_Channel_SetDescriptor(RDMA_HW, RDMA_CHANNEL, &RDMA_Descriptor_0);
Cy_DMAC_Channel_SetInterruptMask(RDMA_HW, RDMA_CHANNEL, CY_DMAC_INTR_MASK);
Cy_DMAC_Channel_Enable(RDMA_HW, RDMA_CHANNEL);
// Start DMA listen for signal
Cy_DMAC_Enable(RDMA_HW);
RDMA is what I named my DMAC channel 0. See the attached image for the exact configuration.
I was very happy because it seemed to work fine. But under closer inspection I realized a huge problem. The generated signal was not consistent.
The source buffer looks like this: All zeros with three consecutive 1's. It gets initialized at the start of main, and never edited again.
for (int i = 0; i < 640; i++) buffer_a[i] = 0x00;
buffer_a[200] = 0xff;
buffer_a[201] = 0xff;
buffer_a[202] = 0xff;
Thus, on my oscilloscope I'm expecting to see a bunch of zeros followed by a 3 pixel bump.
Like: ______---_______ (see correct_square.jpg)
However, I'm not getting this always. Sometimes, almost every other time, the bump is messed up. Sometimes there's a pixel missing
Like: _______-_-_______ or _______--_______ (See corrupt_square.jpg and half_square.jpg)
And other times there's just a weird, very short dip.
Like: _______-.-________ (See corrupt_square2.jpg).
Also note that I'm running the peripheral clock at 100Mhz. If I divide it by 4 (run it at 25Mhz), I don't have these problems but anything >25Mhz creates this inconsistent behavior. Dividing it by 4 is not an option for me though, as that GPIO update speed is way too slow (the PSOC5 even could clock at 74Mhz without problems).
I'm at a loss of what to do. Is this a limitation of the PSoC6? Surely not? Is there a better / fast / more reliable way to update GPIO pins as quickly as possible instead of writing directly to the Register Port Address? Could I somehow use UDB like I did with the PSoC5?
What can I do?
Any advice would be greatly appreciated. It's very hard to find resources on this topic IMO, so I'm hoping someone can shed some light onto this 🙂
Thank you!
Show LessHi,
I have two pieces of code (App1 and App2) that compiled in different FLASH regions (by changing the linker script) and loaded on a PSoC6 MCU (CYBLE-416045-02 device), and I use ResetHandler to determine which code to run based on reset reason.
In App1, there's a function that will call Cy_Flash_WriteRow to write certain data in certain FLASH location, and in App2, it calls this function directly because it knows where this function is located in App1. However, I am always getting CY_FLASH_DRV_ERR_UNC error. Does anyone know what could possibly be the cause?
(Each code has its own startup file (unmodified and provided by Cypress PSoC Creator) compiled and thus they have their own vector tables)
Thanks!
Show Less