PSoC™ 5, 3 & 1 Forum Discussions
Hi.
I want to make my PSoC 5LP USB device to be recognized as WinUSB, in order to save time on Windows drivers development.
I saw the article on Microsoft's website about setting descriptor strings on 0xEE offset (didn't quite understand it...). The question is how can this be done on PSoC 5 (with the PSoC Creator)?
I saw a thread here with similar question, but for FX3...
Thanks in advance.
Show LessI have been working on a bootloader host program and have run into an issue when it comes to the program row portion of the operation, this process is explained in detail in Appendix C on document AN 68272 ( found on AN68272 - PSoC® 3, PSoC 4, PSoC 5LP, and PSoC Analog Coprocessor UART Bootloader ) . The issue is when the program row operation is sent to the psoc I will always receive back error code 0x03 or "The amount of data available is out of the expected range". Now I'm not sure why this is an issue because I send the correct amount of bytes to meet the size of the flash array size in the device. To go into extreme detail, I send 4 packets containing 57 bytes for the main bulk of the flash row and then the final 28 (256 - 57*4) bytes with the program row command. If anyone has an idea on what the issue maybe please respond.
Some further details
-I already converting the ascii characters from the cyacd file to hex and those hex values are the bytes being sent
-My buffer size on the uart in psoc creator is 64
- I've tried sending packets with individual bytes and still returned the same error
-The previous steps, enter bootload and get flash size work as intended with the appropriate responses
Show LessI spent better part of 4 hours trying to figure out why I couldn't communicate with my OLED lcd. Worked fine on atmel, could see it under BusPirate but with a basic setup on the POSC it kept getting NACK's and freezing on MasterSendStop. THEN I found out it was sending the wrong address?
I finally came across this line here:
I2C_1_DATA_REG = (uint8) (slaveAddress << I2C_1_SLAVE_ADDR_SHIFT);
Why is it shifting left the address? I went ahead and change my address to shift left first and now everything is peachy. Could there be an option in the component to turn this off and just check if the address is even?
PS - For the record I know the LSB is the read/write bit, but I have yet to come across a device that is pre sifted liike that.
Show LessAnalog DAC output voltage swing is not raising above 4V. I used voltage DAC and PGA with gain of 4. I set 1V from DAC output to PGA input I am getting 4V. When I increase the PGA input to 1.2V I am still getting 4V. Do I need to add a pull down resistor is 10k at the analog output pin driven by PGA
Show LessHi. I'm part of a repair equipment team and I'm looking for programmer equipment suitable for CY8C26443-24PVXI.
I appreciate your support.
thanks.
Show LessI'm confused on why the verify checksum command for flashing the bootloadable application onto flash isn't working, primarily because all the row checksums are correct. After going through the source code in creator, it seems that the bootloader computes a value for the checksum of the entire application but through the process of comparing the checksum value to what is hard coded value into flash the calculated checksum is set to 0x00. I also tried just setting the bootloader to skip the application checksum and just to end the program, however the program still goes through and runs the application checksum code which halts the operation and stops the device from resetting and allowing the bootloadable application from taking control. Attached is my C# forms app for reference.
Show LessDear All;
Both in the device manager and in the psoc creator 4.1 I can see the that my VID is 4B4 and PID is 10.
However when I execute the following code
InitializeComponent();
CCyUSBDevice *USBDevice = new CCyUSBDevice(NULL);
int devices = USBDevice->DeviceCount();
textBox1->Text = textBox1->Text + "\r\nnumber of devices : \r";
textBox1->Text = textBox1->Text + System::Convert::ToString(devices);
int vID{ 0 }, pID{ 0 };
int d = 0;
if (USBDevice->IsOpen()) {
textBox1->Text = textBox1->Text + "\r\ndevice is open \r";
//USBDevice->Reset();
//USBDevice->Open(0);
vID = USBDevice->VendorID;
}
textBox1->Text = textBox1->Text + "\r\nVID : \r";
textBox1->Text = textBox1->Text + System::Convert::ToString(vID);
I see that
number of devices : 1
device is open
VID : 32769
So how can I get the true VID and PID?
Thanks in advance for your help...
Show LessI feel as though I am missing something very obvious. I would really like a 32-bit up/down counter with the count "exposed" as a 32 bit bus that rolls over from 32'hFFFFFFFF -> 32'h00000000 and also from 32'h00000000 ->32'hFFFFFFFF.
The closest thing I can find is the BasicCounter Component, but there is no up-down option for this component.
I have tried coding my own in Verilog and it takes a huge amount of P-terms, so I am trying different work-arounds.
I think I can create a custom UDB component that will exhibit the correct rollover behavior, but I don't think I can "expose" the Accumulator as a digital output. Is this assumption correct?
Is there an easy option on the Counter Component that I am missing or misunderstanding?
Show LessGreetz,
Someone asked about transfering 16bit data via SPI with DMA here 2 Byte (16 bit) data transfer using DMA to SPIM on Psoc 5 problem , and with help of hima got it working sending data and (searching around also got it) receiving data, it seems to be working as fast as possible. Find the project attached, i don't know if it's portable it uses the following registers SPI_BSPIM_sR16_Dp_u0__16BIT_F1_REG instead of SPI_RXDATA_PTR and SPI_BSPIM_sR16_Dp_u0__16BIT_F0_REG instead of SPI_TXDATA_PTR.
Regards,
Carlos
Show Less