PSoC™ 5, 3 & 1 Forum Discussions
We have done some tests internally.
Using block transfers, we can only get about 500,000 bytes per second over the USB, using libUSB in Linux. This works out to 250,000 samples per second for a 12 bit SAR.
Using isochronous transfers with libUSB, we can get 1,100,000 bytes per second over the USB using libUSB in Linux. (You have to google a lot to get the isochronous transfer examples for LibUSB.) This works out to about 550,000 samples per second from a 12 bit SAR.
Using build in SPI, we can get about 1,200,000 samples per second (without DMA) off of the device. We are using 18 mhz clock, which we just found out is a no-no for 16 bit transfers, according to the data sheet for high speed.
We are currently seeing about 1us between data packets on the SPI. We will be attempting DMA. The DMA wizard refuses to recognize the SPI device (I guess because it is UDB based), and so we stole from the SPIM example project.
I will update this post with the results soon.
Any suggestions?
Show LessI've run into a frustrating basic math problem in creator 3.0. I have a function that takes an array of 8-byte values in little-endian format and converts it to a uint64. Very straight forward, except the generated code doesn't actually work. I have tried this multiple ways (from the obvious solution to super long-hand). I verified that the array pointer is passed in, I can access the data in the array from within the function, but I cannot manipulate the data. I finally broke the whole problem down into as simple a solution as possible (hoping the compiler couldn't not understand what I intended). Here is the resulting code (and it doesn't work).
uint64 TYPE_CONVERT_Uint8Array_to_Uint64( uint8* input ) { // This assumes one sent the data in little-endian format uint32 temp_LO = 0; uint32 temp_HI = 0; uint64 temp; temp_HI |= (((uint32)input[7]) << 24); temp_HI |= (((uint32)input[6]) << 16); temp_HI |= (((uint32)input[5]) << 8); temp_HI |= (((uint32)input[4]) << 0); temp_LO |= (((uint32)input[3]) << 24); temp_LO |= (((uint32)input[2]) << 16); temp_LO |= (((uint32)input[1]) << 8); temp_LO |= (((uint32)input[0]) << 0); temp = (uint64)temp_HI; temp = temp << 32; temp |= temp_LO; return( temp ); }
After all this work, temp_HI and temp_LO have the correct values, but I cannot physically assign temp_HI to temp! How does an assignment like that not work? I always get back 0x00000000. So any point in continuing is moot.
Anyone have any suggestions?
Show LessHi everyone !
Thank you for the possibility to make question here!
My code is using the internal EEPROM.
I am trying to follow the recommendation of Psoc_3 Architecture_TRM regarding Lvia and lvid as reset sources.
What I am trying to do is set those reset sources as interrupt and not reset.
I have attached the .c file with both register needed to write to avoid reset.
I do not know what I am missing, but the writing to register "RESET_CR1" doesn't work.
Writing to RESET_CR3 does work.
Any help will be very appreciated.
Show LessHello,
I'm trying to transfer data acquired from a sequencing SAR ADC to a UART block using DMA.
I used the code provided by the DMA Wizard.
The trouble is, I always get the data from the first TD and never from the second one.
Normally I used the ADC_SAR_Seq_1_SAR_SAR_WRK0_PTR (assuming I only have 1 instance of the sequencing SAR ADC) address to get the ADC value. But in this case, it only provides one of the channels' value (I have 2 channels, by the way).
I tried messing around and I found out that the sequencing SAR ADC is a sort of macro that includes two DMA transfers. I found out the final structure that houses the values from the 2 channels (in my case, its called ADC_SAR_Seq_1_finalArray[2].
I tried to transfer the data directly from there to the UART's TX register, but I still get only the first channel's value.
Am I missing something here? Or is there another way to do it?
I'll put the project as an attachment.
I'm pretty new to PSoC Creator so any in-depth comments and (positive) criticism is very welcomed.
Thanks.
How can i make boolean operation without logic gate in component catalog? i want to use only sorce code, but getting error while using "bool". it said "bool undefined identifier"
Show Lesswhenever i connect 10uH inductor to power supply ... it will effect my filter output. it create the noise . its boost up the power but effecting filter result .. how to resolve this ..
Show LessI have a project that is bootloadable and I want to make the application type normal again for debugging.
However, I select Build Settings and then Code generation and there is no Application Type selection available?
It used to be there but now seems to have vanished? Or maybe it moved (who moved my cheese).
It seems to be a problem only with creator 3.2, if I open the backup version and run in 3.1 it is ok.
Show LessI am a bit confused ovcer use of the EEPROM in the 5LP
Online examples state the entire rows must be read form eeprom, altered and written back. Hoewever, the datasheet for EEPROM in the schematic state you can read and write to any single byte using EEPEOM_ReadByte and EEPEOM_WriteByte.
Would someone please privide an example how I would write and read single bytes to EEPEOM.
Thanks
Show Lesswhenever i connect 10uH inductor to power supply ... it will effect my filter output. it create the noise . its boost up the power but effecting filter result .. how to resolve this ..
I/p voltage = 3.3v (Voltage Source MiniProg3)
M8C running at = 3.3v
******i want to generating 4.7v- 5v for other device
L=10uH
schottky =1N5818
C=100uF (becoz 10uF not able to boost up 5v ...)
SwitchMode =ON
Trip Voltage Lavel=4.81V(5V)
LVD = Disable
# Plz Find the the attached Archive...
Show Less