PSoC™ 4 Forum Discussions
So, where is the errata sheet for PSoC4000? I've searched the site high and low, and found nothing. Despite that, I already found some actual bugs:
- Documentation for the SROM syscall to setup clocks is wrong (TRM "Document No. 001-89309 Rev. *C" page 144). Docs say that this syscall takes a pointer to memory, and there I write param. This never works. Passing the actual param directly (like for "checksum" system call) in SYSARG register does work.
- Either documentation for SPCIF_GEOMETRY is wrong, or the chip has a bug where it reports the wrong value. My CY8C4013SXI-400 (which has 8K of flash) reports this register's value as 0x0001003f. As per register doc sheet (Document No. 001-90002 Rev. *C) that means it has (0x3f + 1) * 256 = 16384 bytes of flash. Of course in reality the chip has 8 (and as a test, I do indeed get a fault if I read past 8K)
- If I use the "Load Flash Bytes" SROM syscall shortly after boot, and point it to an area of flash where i put in the proper params to load 64 bytes of data into the write latches (0x0000d7b6, 0x0000003f) but I DO NOT WRITE THE NEXT 16 WORDS (let's assume i am ok writing whatever garbage was there into flash) , SROM locks up (actual cortex-m0 core lockup bit set and all). However, if those same words of RAM have ever been written before since boot (by core or by the MEMAP) no lockup occurs. (Yes, flash clock is properly set up. Yes, literally writing zeroes or any other values to these bytes immediately before or long before the syscall makes it work properly/)
Given all this, I am guessing at least a few more issues exist. is there a list?Show Less
I am currently trying to develop software for a PSoC 4 to communicate with a MCP2515 CAN controller; however, I cannot get the SCB SPI block to work. I have a PSoC 4200 Prototyping kit that is programmed via the USB boot loader.
I have copied the blocks, the pin mapping and the code from this example and placed it in the project I created that was bootloadable. I made some small modifications where I replaced the LCD to a uart print out so that I could attempt to do some rudimentary debugging.
The project should simply put a list of SPI commands into the slave tx buffer, then into the master tx buffer, and then should read and print from the opposing rx buffers. This does not work, all I get is 255 for every byte that comes through when they are clearly not meant to be of this value.
Further down the track it will be necessary to have this function interrupt driven so I can set masks on the CAN controller and then get messages transmited etc, but I have no implemented this at this stage.
I have attached the example project for your reference.
Is there a way to increase the 3~16 bit SPI master data width limit to 20 bits maybe more? I worked around this issue by using the shift register component with the SPI master to get what I needed done but running into some timing issues.
I know that I can make custom components but would like to avoid doing this. Any ideas?
I'm searching for an easy way to extract/put uint16 form/in CAN Messages/Mailboxes
Before (with other Platform) I do this:
UB12=(*(short *) &CAN_Receive_Data);
UB24=(*(short *) &CAN_Receive_Data);
(*(short *) &CAN_Send_Data)=UB12;
(*(short *) &CAN_Send_Data)=UB24;
I have started looking at the BLE (OTA) over the air firmware update system provided by Cypress and am trying to find information on embedding the host down loader into our mobile application. Does anyone know of any examples to do this? All I can find is the example using the CySmart mobile application.
I'm new to BLE so forgive me. Do all custom services need to be listed in the advertisement packet? I have an application wit a custom service and the Device Information Service. If I remove the Device Information Service from the advertisement packet, CySmart on my Android still seems to know that it's there. How?
I am developing an embedded peripheral as well as a matching smartphone app. If both the 4200BLE and the smartphone know the UUIDs, is it necessary to advertise them in the advertisement packet?
Hello support team,
my hardware setup is the "CYBLE-212019-EVAL EZ-BLE PRoC Evaluation Board" with the "CY8CKIT-042-BLE" Kit.
I have a workspace with two projects. One for the bootloader and one for my application. For programming i use UART communication.
Programming of my application over UART works fine with the "Bootloader Host" tool shipped with PSoC Creator and with the example tool "UART Bootloader Host GUI" which is delivered with the UART Booltloader example (AN68272).
My problem is that i have to reset the device manually and my final device should never have a reset button or any other button, only CapSense.
If i debug the bootloader and set a breakpoint in the function "Bootloader_HostLink" of the file "Bootloader.c" at "Bootloader_COMMAND_EXIT" in the switch statement, it never reaches this lines of code after successful bootloading.
But there is the needed "CySoftwareReset()" and this should reset the device after bootloading.
I have tested both above mentioned tools.
If i take a look at the source files in the folder "cybootloaderutils" in the main directory of PSoC Creator at file "cybtldr_api2.c" in function "CyBtldr_RunAction", there is a call to "CyBtldr_EndBootloadOperation()" after the bootloading operation which generate and send the "EXIT COMMAND"...
I have implemented a own tool with the mentioned source files but this does also not reset my bootloaded device 😞
Why is the "EXIT COMMAND" not received by the bootloader?
According to the AN96841 guideline to set the PA/LNA part on Module, I only can get about -35dBm PA out with Handset detection. But it far away with the description on the Spec: 9.5dBm .
So, Is there any examples program or application profile to prove that?
I've developed a project using a cy8ckit-042-ble: I can send data via bluetooth from my phone, and get an LED to flash the way I want. The LED is wired between pin3.5 and ground, and I drive pin3.5 from high to low as I want.
Now I know I can't safely draw more than 25mA through a GPIO, but for my next step I want to put more current through my LED.
I know I could buy a transistor to create an OpAmp, but I'd like to avoid this if possible. I thought of two options. Can anyone tell me, are either of them sane?
I read that the PSOC4 has 4 OpAmps. I make use of these.
But are these of any use to me? If I'm reading the datasheet correctly, these are low power only. Are they just intended for amplifying low powered input signals? Or can I drive them with my digital logic, and somehow drive my LED directly at a higher current?
My current wiring is simply this:
Pin3.5 ----- Resistor ----- LED -------- Ground
The resistor was chosen to keep the current below 25mA.
Can I replace my wiring with this:
Pin3.5 ----- Resistor ----- |
|----------- LED -------- Ground
Pin3.x ----- Resistor ----- |
And then drive Pin3.5 and Pin3.x to the same state in software? (I read somewhere I can draw up to 100mA per side of the chip.)
Or can anyone suggest another option?
(Please excuse my ignorance around electronics: I'm a software guy really. Getting the soldering iron out was really quite novel.)Show Less
How is the best way to call API's with only a different number? Example: