PSoC™ 4 Forum Discussions
We've been making a product with CY8C4246AZI-L433 for a while, but now there is an issue where ICs from a certain lot number aren't working over USB. The firmware seems to be working otherwise, but the USBFS component never transmits anything.
I got one such unit from the factory and found that the USBFS Bootloader project, installed by itself, still shows the Not Recognized problem with the original cy_boot 5.60, but after updating to cy_boot 5.70, it works correctly. Any idea what might be causing this?
The cy_boot datasheet says that 5.70 has "Updated algorithm of the USB lock/unlock functionality. Enhancement for PSoC 4200L device". I'm not sure what this means, but it might be related?
When debugging the bad IC and pausing it after enumeration has failed, it seems to just be waiting inside USBFS_CyBtldrCommRead, either at
/* Wait unitl host writes data into OUT endpoint. */
or at
/* Wait for enumeration first time. */ ... /* Wait for device enumeration. */
But the Host has already sent setup transactions with no ACK from the PSoC:
Show Less
I am using CY8C4247AZI-M485 in a bus powered USB application. Do I have to connect VBUS to USB connector 5V? Where can I find this pin on the 64pin TQFP?
It would be nice to have one PIN table that holds all fuctionality of each pin to have a good overview. Is VREF (P1.7) the reference of ADC? Here I can connect a reference voltage from 1V8 up to level of VDDD. Is this correct ?
Show LessHi all,
I am working on a custom PSoC board and I am having trouble with I2C. I am pretty sure it is a software issue, as I have tested my pins with digital output pin components sending HIGH signals every 500ms and everythiing works fine.. The problem occurs when I try to use I2C on these pins. I do not read any voltage on the oscilloscope in that case.
I have tried a very simple project where I add a SCB block as I2C master, and I send it through the I2C on pins 0.0 and 0.1
I am using PSoC4100S (precisely chip CY8C4125AZI-S433) and I believe I just dont know how to use the API for the SCB blocks.
I am attaching my project file.
I think the problem might be that I am not starting the I2C correctly, or sending data. Here is what I am trying to do:
Thanks a lot for your help!
Show LessI have a UDB component (single UDB) and was wondering how to initialize the associated Auxiliary Control Register from within the component itself without having to do it at the project level with a call to an initialization API function in main() or some other project-level technique? I want to configure the FIFOs of a UDB into their "Single Buffer" mode by writing 0x03 into the Auxiliary Control Register of that UDB (Architecture TRM, section 16.2.3.7), but can't figure out a way of doing that automatically.
Edit 2020/09/16: To clarify, I am trying to initialize that register at the component level, rather than at the project level, so that someone using the component just has to drag it onto their schematic from the component library, and all the necessary hardware configuration would be done transparently by the component itself simply because it has been instantiated (and not require an initialization function to be called in main() or for the startup code to be modified at the project level). This is the case already for everything but that Auxiliary Control Register. The notion was to make the component potentially a pure "hardware" component from the perspective of someone using it in their project from the component library (it has some parameters that can be set from the schematic, and i was hoping that was all that would needed to be done by someone using it).
I saw in the Component Author Guide the ".cy_registers()" function (section 4.3.5 "Fixed Blocks") that "For all fixed blocks, a parameter of cy_registers is available to allow you to explicitly set the values for the given registers for the block. The values listed will be included in the configuration bitstream generated to program the part, which will be established before the main() function is called." This seems to be exactly what I want, but it doesn't seem that the datapath itself allows this parameter. When I look at the .vh2 file created for the component, the instance of cy_clock_v1_0 that I put on my schematic (and wired to my component) has a parameter "cy_registers" (it's empty, but it's listed); but the cy_psoc3_dp I instantiated does not have such a parameter listed. When I tried to add it to the parameter list of the datapath, I get an error.
Is there a "proper" way of doing this from within my component so the value is automagically intialized by the time main() runs? I wanted the component to be able to run without needing to be initialized in the user's software (effectively a pre-configured hardware component), and the FIFO configuration is the only thing I can't seem to access from within my Verilog code (and it won't work without the FIFOs being in the proper mode). I hope I'm just missing something obvious.
I'm guessing that the cyfitter_cfg() function can do it (and is where this should end up), but I can't figure out how to get it in there (there's a BS_UDB_0_0_0_CONFIG_VAL[] array in the cyfitter_cfg.c file that was created that seems to have the UDB config in it, and presumably the Auxiliary Control Register is one of those values). I read through Alan Hawse's excellent IoTExpert article on PSoC startup, and it told me where it would be done, but provided me with no clues on how to get it done.
Show LessHello, I want to use the iDAC as a current source and my load resistance varies. I understand that I am not able to output more than ~2V due to the compliance voltage. However, is there a way to know when I have reached that ceiling? Do I need to check the iDAC's output voltage with an ADC, or is there a better way to know?
Thanks!
Show LessHi,
Trying to find this info in the datasheet(s), but can't really say for sure.
- On the CY8C4248BZI-L489, are there ANY pins that is not Hi-Z in xres vs early-boot?
I think I know the answer but need to be sure that there aren't any hard scb peripheral blocks that happen to be active low or high during boot.
Thanks David
Show LessHello,
I was wondering if it is possible to whitelist by using a manufacturer name, rather than device address. My business has many ble mesh systems up and running in schools (security systems), but I don't want all of my nodes scannable/connectable by everyone. It would be impossible to set up a whitelist for each device address as we may have up to 300 ble nodes and 100 tablets in a single building. In this scenario, if a single tablet was added, we would have to update the whitlist for 300 nodes. Hopefully you can see the issue!!
We have custom tablets built for us, with our company name as the manufacturer name. If this is possible to filter by, it would help with security issues. Curreny, I have the system allowing for a max connection time of 4 seconds, and only encrypted data is acceptable. However, I don't want anyone tinkering with my equipment.
Thank you for your time!
Andy
Show LessHello,
AN86526 - PSoC4 I2C Bootloader is modified to work with CY8CKIT-145-40XX.
The AN86526 documentation describes how to debug Bootloadable.
I don't know how to set the Application Type to Normal.
Please tell me how.
Best regards,
Yocchi
Show LessHello,
We are trying it with CY8CKIT-145-40XX.
We know that there is the "Measure Cmod and Cp of PSoC 4 CapSense - KBA225808".
However, this KBA only works up to CSD V6.0 and is obsolete in V7.0.
The arguments of the API functions below are different.
[up to CSD V6.0]
uint32 CapSense_GetSensorCapacitance (uint32 widgetId, uint32 sensorId)
[CSD V7.0]
uint32 CapSense_GetSensorCapacitance (uint32 widgetId, uint32 sensorElement,
CapSense_TST_MEASUREMENT_STATUS_ENUM * measurementStatusPtr)
Therefore, We added and changed the following codes.
[Addition]
CapSense_TST_MEASUREMENT_STATUS_ENUM measurementStatusPtr;
[Change]
// MyI2CRegs.u8_cpValue = (uint8)CapSense_GetSensorCapacitance (i, 0);
MyI2CRegs.u8_cpValue = (uint8)CapSense_GetSensorCapacitance (i, 0, &measurementStatusPtr);
The result of measuring Cp is as follows.
[up to CSD V6.0]
u8_cpValues are correct.
[CSD V7.0]
u8_cpValues are incorrect.
We have confirmed that the value of measurementStatusPtr is CapSense_TST_MEASUREMENT_SUCCESS.
Why?
Best regards,
Yocchi
Show LessWe've got a number of bits of deployed hardware that use CY5677's in them, and we've recently started building a new one with a 'red' CY5677 in it, and the software doesn't recognise it:
DongleManager.TryGetCySmartDongleCommunicator
returns err with 'Message = "Not a valid CySmart dongle!"'
Is there a document with the changes needed to support this?
Mike
Show Less