- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The DMA Wizard does not allow linking an 8-bit SAR ADC to an 8-bit VDAC.
It complains about incompatible burst sizes. The specific error is "The selected Source and Destination have incompatible Burst sizes. No valid size can be selected".
A minimal example project just containing the three relevant components added to the schematic is attached. This is enough to reproduce the error message. Also attached a screenshot of the error message.
I suspect this is due to the SAR ADC being permanently stuck in a 16-bit register configuration from the DMA's perspective, even if the component is configured with 8-bit resolution. This means that the DMA configuration assumes a minimum burst size of 2 bytes, even though a burst size of 1 byte should be fine.
In the DMA section of the SAR ADC datasheet, I see this comment about the ADC_SAR_WRK0_PTR source: "Receive a 2-byte result for a conversion with a result that always has 12-bit resolution." This supports the previous suspicion that the DMA burst size cannot shrink to match the configured 8-bit resolution.
The DMA Wizard scales the DeltaSigma ADC burst size correctly from 1 to 3 bytes as the resolution changes from 8-bit to 20-bit. The DeltaSigma datasheet also lists these burst sizes as valid lengths of ADC_DelSig_DEC_SAMP_PTR depending on resolution. I'm just surprised that the SAR ADC cannot scale burst width similarly.
Is this a bug, or just a limitation of the SAR ADC hardware?
Are there any workaround suggestions besides just using the DeltaSigma ADC instead of the SAR ADC?
I doubt it's possible to just point the DMA source address to ADC_SAR_WRK0_REG, which contains the relevant 8-bit value.
I'm thinking one option is to chain a pair of TDs that each read one byte, where the first TD passes the first byte along to the 8-bit VDAC, and the second TD just throws the other byte away.
I also found these two unresolved threads which encountered the same burst width issue.
Why I am unable to transfer data from ADC_SAR to VDAC8 Via DMA?
Solved! Go to Solution.
- Labels:
-
PSoC 5LP
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The burst size of the ADC_SAR component used by the DMA Wizard is described in the DMA Capability file at the directory C:\Program Files (x86)\Cypress\PSoC Creator\4.1\PSoC Creator\psoc\content\CyComponentLibrary\CyComponentLibrary.cylib\ADC_SAR_v3_0\PSoC5\ADC_SAR_v3_0.cydmacap Following is the content of the file.
<DMACapability>
<Category name="SAR_ADC"
enabled="true"
bytes_in_burst="2"
bytes_in_burst_is_strict="true"
spoke_width="2"
inc_addr="false"
each_burst_req_request="true">
<Location name="`$INSTANCE_NAME`_SAR_WRK0_PTR" enabled="true" direction="source"/>
</Category>
</DMACapability>
It was found from this file, there is only one "Category" supporting 2-byte burst transfer. It is available to describe multiple "Category" in a DMA Capability file. So you can modify the ADC_SAR component to have an additional "Category" supporting 8-bit transfer. Please refer "7.4 Add/Create DMA Capability File" in the following document.
PSoC® Creator™ Component Author Guide | Cypress Semiconductor
Regards,
Noriaki
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The burst size of the ADC_SAR component used by the DMA Wizard is described in the DMA Capability file at the directory C:\Program Files (x86)\Cypress\PSoC Creator\4.1\PSoC Creator\psoc\content\CyComponentLibrary\CyComponentLibrary.cylib\ADC_SAR_v3_0\PSoC5\ADC_SAR_v3_0.cydmacap Following is the content of the file.
<DMACapability>
<Category name="SAR_ADC"
enabled="true"
bytes_in_burst="2"
bytes_in_burst_is_strict="true"
spoke_width="2"
inc_addr="false"
each_burst_req_request="true">
<Location name="`$INSTANCE_NAME`_SAR_WRK0_PTR" enabled="true" direction="source"/>
</Category>
</DMACapability>
It was found from this file, there is only one "Category" supporting 2-byte burst transfer. It is available to describe multiple "Category" in a DMA Capability file. So you can modify the ADC_SAR component to have an additional "Category" supporting 8-bit transfer. Please refer "7.4 Add/Create DMA Capability File" in the following document.
PSoC® Creator™ Component Author Guide | Cypress Semiconductor
Regards,
Noriaki
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I am also looking into this, but my coding skills are poor at best. With the "Create DMA Capability File" chapter, I cannot figure out how to add an extra category to a SAR component within a project. What are the required steps to get a SAR that has a 1 byte burst capability into a project?
Thank you in advance!
With kind regards,
Jim