PSoC™ 4 Forum Discussions
We are using the PSoC 4.2 BLE chipset and have issues with disconnection.
I suspect that the algorithm for detecting and avoiding strong blockers /poor channels is not working or not active.
CyBle_GapGetChannelMap() always returns that all channels are active and i can also measure that there is activity on all channels even though there are strong WIFI disturbance.
Comparison testing with other BLE devices connected to an IPhone show that BLE skips the channels with high disturbance.
1. How is the Channel map updated by the BLE Stack? do i need to trigger the learning and update in the code or enable it somewhere?
2. If it is supposed to be handled by our own algorithm and by using CyBle_GapcSetHostChannelClassification(), how do i get the information of the active channel and coresponding rssi level etc?
Show Less
Dear Sirs and Madasms,
We are considering a proximity sensor using CapSense GEN5 installed in PSoC4100S MAX.
It has not been possible to achieve both "detection range" and "SNR > 5".
The CY8CKIT-041S-MAX PSoC™ 4100S Max pioneer kit guide states "can demonstrate a proximity range of about 18 cm distance" at 3.2.11.1. Even if the NSUB value can be lowered to achieve a detection distance of 18 cm,
it is still difficult to ensure an SN ratio of 5 or more as specified in AN92239.
/* CY8CKIT-041S-MAX PSoC™ 4100S Max pioneer kit guide URL */
/* AN92239 URL */
So We have some questions,
(1)
Is it possible to use the sample project with the CY8CKIT-041S-MAX demo kit and meet the detection distance of 18cm and SNR>5?
(2)
AN64846 and AN92239 have a description about ALP Filter.
I understand that the detection distance can be extended by using the ALP Filter, but is it possible to secure an SN ratio of 5 or more even when the detection distance is 25 cm?
/* AN64846 URL */
(3)
The only IDE for PSoC4S MAX with CapSense GEN5 is ModusToolbox.
Would it be possible to provide us an ALP Filter for the proximity sensor that supports ModusToolbox?
Regards,
Show LessHi,Community,
Is an external WCO usually necessary in a PSoC4100S Max design?
Looking at the datasheet, We can see that by fixing IMO to 32MHz. Can we use that instead of a WCO?
The intent of this question is to reduce the number of external timing devices if at all possible.
And we will use an ECO for the main clock(HFCLK).
Also, if we need a WCO, what else could we consider besides an RTC?
If we want to put PSoC to sleep for some reason, depending on the boot timing we should not use IMO instead of WCO.
Best Regards,
Chihiro Tatebayashi / NEXTY
Show LessHi All,
New to the forum...
I was wondering how does one play samples? Looking at playing a raw audio sample from EPROM/SPI Flash to I2S or DAC.
Already looked at some older solutions which talked about Storing raw audio in EEPROM -> drive DMA with clock or PWM -> pipe DMA output to DAC but examples are nolonger availalable (on the old Cypress website)Idealy would like any examples or application notes on this.
Thanks
John
Hello. I am working on a PSOC 4200 CY8C4245AXI. I am attempting to get RS-485 communication working, and have been unsuccessful thus far. Due to layout and resource constraints, I must use the SCB UART resource, and not the UART component that has a tx_en output, meaning I must manually disable Tx after each UART transmission as this is half-duplex.
What I expect:
1. Send data via RS-485 to PSOC UART
2. Byte(s) are inserted in to the Rx FIFO
3. In main loop, "UART_UartGetChar()" is called, and is non-zero indicating something was in the FIFO and has been dequeued.
4. Enable transmission
5. Send the character that was dequeued
6. Wait until "UART Done" Tx interrupt is raised with a while loop.
7. Disable transmission
8. Clear the interrupt
9. Go to either 1 or 3 depending on how many bytes were sent originally.
If I send a single byte, it will usually echo it back. But once every zero to ? times it will instead echo back something unrelated. Not a bitshift or anything, but it seems to always be the same if you send the same data. For example, sending the character "a" will reply back with "a" usually, but also 0xD8 as well inserted randomly.
If I send multiple bytes at once, I would expect that they would be inserted in to the FIFO and processed until the FIFO is empty, with the busy loop occurring between each byte. What actually occurs is very strange in that if I send two character, say "ab", (happens with any two that I have tested). it will not echo anything back at all. But if you send three characters, say "abc", it will echo back only "c". But it echos back with spurious failures as before, where it will echo back "c" usually, but sometimes some other data. It will only echo the final byte received, and the other bytes are ignored. The "other data" received is the same as if you only sent the final byte, so if you only send "c" it will send back "c" with spurious failures of 0xEC.
If anyone can provide some guidance that would be great. Attached is the project. This example was based upon the PSOC 4200 SCB UART example that is with PSOC Creator and modified for my hardware.
The first image is sending "a" repeatedly. The second is sending "abc" repeatedly. The replies are a single byte and displayed is the hex value of that byte. So interpret each space as a separation between sending the ascii data. I did not attach the output of the first example because it would just be receiving one single byte and nothing else.
EDIT: Updated because the ISR version was failing due to a silly mistake on my part. But not it acts the same as the former "busy loop" version that has been removed.
Show LessMoved to a new PC recently and trying to get the cysamrt app.
Does anyone have a link /drive to its installation for windows ?
Please send to tumbler2@mistakesey.com
Thanks!
Show Less
Hello. I am working on a PSOC 4200 CY8C4245AXI. I am attempting to get RS-485 communication working, and have been unsuccessful thus far. Due to layout and resource constraints, I must use the SCB UART resource, and not the UART component that has a tx_en output, meaning I must manually disable Tx after each UART transmission as this is half-duplex.
My issue manifests in two different way depending on how it is implemented.
1. Add a Tx interrupt for "UART Done," then disable the Tx in the ISR.
This would be my preferred way of implementing it. The attached example "isr_project" is this. This project should echo back the data sent. What happens is I send it a byte (for example, "a"), and it echos it back successfully. But then it does not echo back any more data. I do clear the interrupt source.
2. Busy loop that waits until the interrupt occurs.
This should theoretically be isomorphic to the above solution. Enable transmission, loop until UART Done occurs, disable transmission. This almost does what I would expect it to do.
What I expect:
1. Send data via RS-485 to PSOC UART
2. Byte(s) are inserted in to the Rx FIFO
3. In main loop, "UART_UartGetChar()" is called, and is non-zero indicating something was in the FIFO and has been dequeued.
4. Enable transmission
5. Send the character that was dequeued
6. Wait until "UART Done" Tx interrupt is raised with a while loop.
7. Disable transmission
8. Clear the interrupt
9. Go to either 1 or 3 depending on how many bytes were sent originally.
If I send a single byte, it will usually echo it back. But once every zero to ? times it will instead echo back something unrelated. Not a bitshift or anything, but it seems to always be the same if you send the same data. For example, sending the character "a" will reply back with "a" usually, but also 0xD8 as well inserted randomly.
If I send multiple bytes at once, I would expect that they would be inserted in to the FIFO and processed until the FIFO is empty, with the busy loop occurring between each byte. What actually occurs is very strange in that if I send two character, say "ab", (happens with any two that I have tested). it will not echo anything back at all. But if you send three characters, say "abc", it will echo back only "c". But it echos back with spurious failures as before, where it will echo back "c" usually, but sometimes some other data. It will only echo the final byte received, and the other bytes are ignored. The "other data" received is the same as if you only sent the final byte, so if you only send "c" it will send back "c" with spurious failures of 0xEC.
If anyone can provide some guidance that would be great. Attached are two projects, one with the ISR approach, and one with the busy loop approach. A note is that in my hardware, a high output disables the RS-485 Tx. These short examples were based upon the PSOC 4200 SCB UART example that is with PSOC Creator and modifeid for my hardware.
The first image is sending "a" repeatedly. The second is sending "abc" repeatedly. The replies are a single byte and displayed is the hex value of that byte. So interpret each space as a separation between sending the ascii data. I did not attach the output of the first example because it would just be receiving one single byte and nothing else.
Show LessDear Sirs and Madams,
Please tell us about the accuracy of ECO used for PSoC4S.
We are currently using 24MHz external clock for my PSoC4S(CY8C4126AXI-S445).
(1)
The frequency setting described in Architecture TRM is "24MHz ≧ f > 17MHz".
Please tell us the acceptable ECO accuracy for this specified upper limit of 24MHz.
(2)
If I exceed the specified upper limit of 24MHz, will it affect the operation of PSoC4S?
Regards,
Show LessHello,
Is it possible to make an industrial capacitive sensor with CapSens? How is Cypress for industrial applications? In the documents I have read so far, it is used as a touch button. Can it read another object industrially?
Thank you
I am using a CY8C4247LTI-L485. It appears that up to 20 bytes can be sent over SPI (SPI master). Is there a way that more than 20 bytes (e.g. 120bytes in one frame) can be sent over SPI in one frame i.e. CS stays low for the entire frame and SCLK is continuous for the entire frame ?
Show Less