完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我正在尝试使用Discovery驱动程序将ADC驱动程序(ADCD2)用于SPC560D30L3设备(我已将SPC560D40替换为SPC560D30 MCU)。我正在尝试使用不同的ADC驱动程序状态来实现状态机。如果我的理解是正确的,我将进入以下状态, 开关(ADCD2.state) { 案例ADC_UNINIT: 打破; 案例ADC_STOP: 打破; 案例ADC_READY: 打破; 案例ADC_ACtiVE: 打破; 案例ADC_COMPLETE: 打破; 案例ADC_ERROR: 打破; } 如果上述方法是正确的,则“ADCD2.state”语句本身不起作用!任何人都可以澄清这个问题吗?还需要哪些其他设置? 在此先感谢您的帮助。 麦克风。 #adc 以上来自于谷歌翻译 以下为原文 Hello, I am trying to use the ADC driver (ADCD2) for SPC560D30L3 device using Discovery kit (I have replaced SPC560D40 with SPC560D30 MCU). I am trying to implement a state machine using different states of ADC driver. If my understanding is correct, I shall access the states as below, switch (ADCD2.state) { case ADC_UNINIT: break; case ADC_STOP: break; case ADC_READY: break; case ADC_ACTIVE: break; case ADC_COMPLETE: break; case ADC_ERROR: break; } If above way is correct the statement 'ADCD2.state' itself is not working! Can anybody clarify the issue? What other settings are required? Thanks in advance for your help. Mike. #adc |
|
相关推荐
7个回答
|
|
你好,Erwan,
感谢您的回复。你能解释一下如何使用补丁模式吗?我需要参考哪些文件来理解修补? 谢谢。 麦克风。 以上来自于谷歌翻译 以下为原文 Hello Erwan, Thanks for reply. Can you please explain how to use the patch mode? Whcih document I need to refer for understanding the patching? Thanks. Mike. |
|
|
|
我有3-4个ADC通道配置用于测量。根据应用程序要求,我将启动所有或单个通道测量(即ADC_Start_Conversion)。主要功能将遵循ADC状态,以了解何时停止ADC并进行测量(即ADC_Stop_Conversion)。这是我的要求。能否详细说明如何利用不同的驱动程序状态/标志来实现这一点?
提前致谢。 麦克风。 以上来自于谷歌翻译 以下为原文 I have 3-4 ADC channels configured for measurements. Based on the app requirement, I will initiate all or individual channel measurements (i.e. ADC_Start_Conversion). The main function will follow the ADC states to know when to stop the ADC and do the measurements (ie.e ADC_Stop_Conversion). This is my requirement. Can you please elaborate how I can make use of different driver states/flags to implement this? Thanks in advance. Mike. |
|
|
|
你好迈克,
您可以通过配置器为每个ADC通道编写(非强制)一些单独的回调 (Cf截图)。 如果您的ADC配置处于模式,则无需重新启动转换。 它会自动重启。 最好的祝福 二万 以上来自于谷歌翻译 以下为原文 Hello Mike , You can write (not mandatory) some separate callbacks for each ADC Channel by the configurator (Cf screenshot). If your ADC configuration is in mode, no need to restart the conversion. it is automatically restarted. Best Regards Erwan |
|
|
|
你好,Erwan,
参考下面的邮件,我为SPC560D30L1配置了一个ADC通道。我正在使用设置为。我已将回调配置为读取ADC计数并将其转换为电压值。在这里,我观察到需要启动ADC转换(ADC_Start_Conversion)以读取新的输入值。我是在按键上做的。如何配置ADC以进行连续读取并在输入更改时获取更新的计数值? 请注意,我需要相互独立的3-4个ADC通道,我需要类似的功能。怎么实现这个? 在此先感谢您的帮助。 麦克风。 请在下面找回回调, / * * ADC流回调,名称在ADC图形中定义 *配置。 * / size_t nx = 0,ny = 0; void ADC_conversion_callback(ADCDriver * adcp,adcsample_t * buffer,size_t n) { (空隙)ADCP; if(samples == buffer) { nx + = n; } 其他 { ny + = n; } g_adc_val = samples [0]; g_adc_vol =((5.0 / 4096)* g_adc_val); } / * * ADC错误回调,名称在ADC图形中定义 *配置。 * / uint32_t errore = 30; void ADC_error_callback(ADCDriver * adcp,adcerror_t err) { (空隙)ADCP; 错误=错误; osalSysHalt(''ADC失败''); } 以上来自于谷歌翻译 以下为原文 Hello Erwan, Referring to below mail, I have configured an ADC channel for SPC560D30L1. I am using with set to . I have configured the callbacks to read the ADC count and to convert it to voltage value. Here, I have observed that ADC conversion is required to be initiated (ADC_Start_Conversion) in order to read the new input value. I am doing this on a key press. How can I configure the ADC for continuous read and get the updated count value when input changes? Please note that I have 3-4 more ADC channels independent of each other where I required similar functionality. How to implement this? Thanks in advance for your help. Mike. Please find below the callbacks, /* * ADC streaming callback, the name is defined in the ADC graphic * configuration. */ size_t nx = 0, ny = 0; void ADC_conversion_callback (ADCDriver *adcp, adcsample_t *buffer, size_t n) { (void)adcp; if (samples == buffer) { nx += n; } else { ny += n; } g_adc_val = samples[0]; g_adc_vol = ((5.0/4096)*g_adc_val); } /* * ADC error callback, the name is defined in the ADC graphic * configuration. */ uint32_t errore = 30; void ADC_error_callback (ADCDriver *adcp, adcerror_t err) { (void)adcp; errore = err; osalSysHalt(''ADC failure''); } |
|
|
|
你好迈克,
对于线性缓冲区,您应该重新开始转换 每次ADC转换后。 也许您应该切换到循环模式,无需重新启动转换 设置为它应该是最新的值。 ,驱动程序执行一系列组转换然后停止。这种模式就像一次重复转换N次,每次转换后缓冲区指针都会增加。缓冲区组织为S(CG)* N样本矩阵,当S(CG)是转换组大小(通道数)并且N是缓冲区深度(重复转换次数)时,非常类似于线性模式但操作不是当缓冲区被填满时停止,它会自动重启,缓冲区指针会回到缓冲区基础。 如果你想在按键后显示更新的值,我建议使用易于配置的外部IRQ 或使用示例参见ChibiOS-RT SPC560Dxx ADC测试应用程序发现。 最好的祝福 二万 以上来自于谷歌翻译 以下为原文 Hello Mike , yes for a linear buffer you should re-start the conversion after each ADC Conversion. Maybe you should switch to the circular mode no need to restart the conversion with set to it should be the latest value.
or use a example cf ChibiOS-RT SPC560Dxx ADC Test Application for Discovery. Best regards Erwan |
|
|
|
感谢Erwan的帮助。我尝试实现循环模式,但它总是卡在函数'ADC_Conversion_Callback'中,永远不会允许到达主循环。如果我把呼吸点放在上面的功能中,总会发现它。
我也尝试使用external int EIRQ17来显示更新的值,但是更新实际值是相当长的时间。你能指导上述两种情况吗? 谢谢你的帮助。 麦克风。 以上来自于谷歌翻译 以下为原文 Thanks Erwan for your help. I tried implementing the circular mode but it always gets stuck in function 'ADC_Conversion_Callback' and never allows to reach the main endless loop. If I put breatpoint in above function it is found there always. I also tried using external int EIRQ17 for displaying the updated value but it is considerable time to update the actual value. Can you please guide in both the above cases? Thanks in for your help. Mike. |
|
|
|
你好迈克,
您可以尝试提高EIRQ17的优先级(PSR设置)吗? 我们有ADC优先权 #define SPC5_ADC_ADC0_WD_PRIORITY 12 #define SPC5_ADC_ADC0_EOC_PRIORITY SPC5_ADC_ADC0_WD_PRIORITY 如果问题仍然存在,你能把你的申请寄给我吗? 最好的祝福 二万 以上来自于谷歌翻译 以下为原文 Hello Mike , Could you try to increase the priority of your EIRQ17 (PSR to set) ? we have a ADC priority #define SPC5_ADC_ADC0_WD_PRIORITY 12 #define SPC5_ADC_ADC0_EOC_PRIORITY SPC5_ADC_ADC0_WD_PRIORITY if the problem persists , could you send me your application ? Best regards Erwan |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2644 浏览 1 评论
3209 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1784 浏览 1 评论
3613 浏览 6 评论
5990 浏览 21 评论
940浏览 4评论
1317浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
585浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1304浏览 3评论
1362浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 01:06 , Processed in 1.302588 second(s), Total 91, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号