12
返回列表 发新帖
楼主: jiangxueqq

[CodeWarrior] kl25z-codewarrior-ADC程序定义问题(已解决)

[复制链接]
  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-19 09:27:42 | 显示全部楼层

    回复:kl25z-codewarrior-ADC程序定义

    回复第 3 楼 于2014-08-17 14:07:03发表:
    回复第 2 楼 于2014-08-16 09:11:46发表:
    触发用循环采集。你好,你能说的详细点吗?触发需要编程吗?还是只要设置一下就好了? 

     

    你的这款KL25没有这功能,KE02\KE04\KE06这系列芯片倒是有FIFO扫描模式可以简化你的操作。
    如果你对FIFO scan模式感兴趣可以看一下参考手册MKE02P64M40SF0RM的“24.4.6 FIFO operation”
    Figure 24-10. FADC FIFO structure.jpg
    参考手册的“24.5.2 ADC FIFO module initialization example”还提供了初始化、中断服务函数等示例代码及详细描述
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    14

    帖子

    0

    注册会员

    Rank: 2

    积分
    50
    最后登录
    1970-1-1
     楼主| 发表于 2014-8-19 11:28:21 | 显示全部楼层

    回复:kl25z-codewarrior-ADC程序定义

    回复第 8 楼 于2014-08-19 08:49:51发表:
    楼主下次这么插图大家才能直接在帖子里看到图片。

     
    好的,第一次发帖,谢谢!下次注意~
     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    14

    帖子

    0

    注册会员

    Rank: 2

    积分
    50
    最后登录
    1970-1-1
     楼主| 发表于 2014-8-19 11:32:23 | 显示全部楼层

    回复:kl25z-codewarrior-ADC程序定义

    回复第 9 楼 于2014-08-19 09:00:39发表:
    回复第 6 楼 于2014-08-18 18:11:54发表:
    回复第 4 楼 于2014-08-18 14:55:48发表:
    楼主你好
    KL25芯片的ADC通道切换是需要你修改ADC0_SC1A或ADC0_SC1B寄存器ADCH位实现的。
    你好,我的意思是在codewarrior中配置好ADC通道后,在程序中是修改这个吗?ADC0_SC1A = (ADC_SC1_AIEN_MASK | ADC_SC1_ADCH(0x1F));我有6个通道,怎么实现呢?

     

    比如你需要连续将6通道信号转换,就可以在非连续转换模式下每次转换完成中断里修改通道配置。
    然后这些设置好的通道会根据其配置的触发信号的发生来启动采样转换。
     
    每个通道都需要设置触发器吗,还是6个通道只需要设置一个就好了
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-19 14:08:15 | 显示全部楼层

    回复:kl25z-codewarrior-ADC程序定义

    回复第 13 楼 于2014-08-19 11:32:23发表:
    回复第 9 楼 于2014-08-19 09:00:39发表:
    回复第 6 楼 于2014-08-18 18:11:54发表:
    回复第 4 楼 于2014-08-18 14:55:48发表:
    楼主你好
    KL25芯片的ADC通道切换是需要你修改ADC0_SC1A或ADC0_SC1B寄存器ADCH位实现的。
    你好,我的意思是在codewarrior中配置好ADC通道后,在程序中是修改这个吗?ADC0_SC1A = (ADC_SC1_AIEN_MASK | ADC_SC1_ADCH(0x1F));我有6个通道,怎么实现呢?

     

    比如你需要连续将6通道信号转换,就可以在非连续转换模式下每次转换完成中断里修改通道配置。
    然后这些设置好的通道会根据其配置的触发信号的发生来启动采样转换。
     
    每个通道都需要设置触发器吗,还是6个通道只需要设置一个就好了
     

     

    软件触发:
    如果你只使用软件触发模式,那么ADC0_SC1A所选通道的ADC采样转换是由软件触发的。
     
    硬件触发:
    KL25的ADC0模块只有两个预触发器:预触发A启动的通道由ADC0_SC1A决定,预触发B启动的通道由ADC0_SC1B决定。至于预触发A和预触发B的信号源是由SIM_SOPT7寄存器配置的。
    默认情况下TPM1 channel 0 (A) and channel 1 (B) triggers selected for ADC0.(SIM_SOPT7寄存器的ADC0ALTTRGEN=0)
    也可以通过配置ADC0PRETRGSEL位和ADC0TRGSEL位另外选择ADC0模块的Pre-trigger A或Pre-trigger B对应触发源
    SIM_SOPT7.jpg
     
    参考手册的“Table 3-1. Module to Module Interconnects”表格也清楚地列出了以上寄存器配置对应的ADC0预触发A和预触发B的信号源。
    Table 3-1. Module to Module Interconnects.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    14

    帖子

    0

    注册会员

    Rank: 2

    积分
    50
    最后登录
    1970-1-1
     楼主| 发表于 2014-8-19 14:40:16 | 显示全部楼层

    回复:kl25z-codewarrior-ADC程序定义

    回复第 14 楼 于2014-08-19 14:08:15发表:
    回复第 13 楼 于2014-08-19 11:32:23发表:
    回复第 9 楼 于2014-08-19 09:00:39发表:
    回复第 6 楼 于2014-08-18 18:11:54发表:
    回复第 4 楼 于2014-08-18 14:55:48发表:
    楼主你好
    KL25芯片的ADC通道切换是需要你修改ADC0_SC1A或ADC0_SC1B寄存器ADCH位实现的。
    你好,我的意思是在codewarrior中配置好ADC通道后,在程序中是修改这个吗?ADC0_SC1A = (ADC_SC1_AIEN_MASK | ADC_SC1_ADCH(0x1F));我有6个通道,怎么实现呢?

     

    比如你需要连续将6通道信号转换,就可以在非连续转换模式下每次转换完成中断里修改通道配置。
    然后这些设置好的通道会根据其配置的触发信号的发生来启动采样转换。
     
    每个通道都需要设置触发器吗,还是6个通道只需要设置一个就好了
     

     

    软件触发:
    如果你只使用软件触发模式,那么ADC0_SC1A所选通道的ADC采样转换是由软件触发的。
     
    硬件触发:
    KL25的ADC0模块只有两个预触发器:预触发A启动的通道由ADC0_SC1A决定,预触发B启动的通道由ADC0_SC1B决定。至于预触发A和预触发B的信号源是由SIM_SOPT7寄存器配置的。
    默认情况下TPM1 channel 0 (A) and channel 1 (B) triggers selected for ADC0.(SIM_SOPT7寄存器的ADC0ALTTRGEN=0)
    也可以通过配置ADC0PRETRGSEL位和ADC0TRGSEL位另外选择ADC0模块的Pre-trigger A或Pre-trigger B对应触发源

     
    参考手册的“Table 3-1. Module to Module Interconnects”表格也清楚地列出了以上寄存器配置对应的ADC0预触发A和预触发B的信号源。

     
    谢谢,谢谢,你说在codewarrior中,只配置预触发A,然后在软件中编程:当定时器中断10微秒时,切换到下一个通道转换,这样可以吗?
    还有个问题就是:我刚接触codewarrior,是不是在设置中把一些总线啊,中断啊,都配置好后,就不需要在程序中改动了?在程序main中只需要写要实现的代码就可以了?什么adc.c、tpm.c都不需要改了?
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-19 15:36:59 | 显示全部楼层

    回复:kl25z-codewarrior-ADC程序定义

    回复第 15 楼 于2014-08-19 14:40:16发表:
    回复第 14 楼 于2014-08-19 14:08:15发表:
    回复第 13 楼 于2014-08-19 11:32:23发表:
    回复第 9 楼 于2014-08-19 09:00:39发表:
    回复第 6 楼 于2014-08-18 18:11:54发表:
    回复第 4 楼 于2014-08-18 14:55:48发表:
    楼主你好
    KL25芯片的ADC通道切换是需要你修改ADC0_SC1A或ADC0_SC1B寄存器ADCH位实现的。
    你好,我的意思是在codewarrior中配置好ADC通道后,在程序中是修改这个吗?ADC0_SC1A = (ADC_SC1_AIEN_MASK | ADC_SC1_ADCH(0x1F));我有6个通道,怎么实现呢?

     

    比如你需要连续将6通道信号转换,就可以在非连续转换模式下每次转换完成中断里修改通道配置。
    然后这些设置好的通道会根据其配置的触发信号的发生来启动采样转换。
     
    每个通道都需要设置触发器吗,还是6个通道只需要设置一个就好了
     

     

    软件触发:
    如果你只使用软件触发模式,那么ADC0_SC1A所选通道的ADC采样转换是由软件触发的。
     
    硬件触发:
    KL25的ADC0模块只有两个预触发器:预触发A启动的通道由ADC0_SC1A决定,预触发B启动的通道由ADC0_SC1B决定。至于预触发A和预触发B的信号源是由SIM_SOPT7寄存器配置的。
    默认情况下TPM1 channel 0 (A) and channel 1 (B) triggers selected for ADC0.(SIM_SOPT7寄存器的ADC0ALTTRGEN=0)
    也可以通过配置ADC0PRETRGSEL位和ADC0TRGSEL位另外选择ADC0模块的Pre-trigger A或Pre-trigger B对应触发源

     
    参考手册的“Table 3-1. Module to Module Interconnects”表格也清楚地列出了以上寄存器配置对应的ADC0预触发A和预触发B的信号源。

     
    谢谢,谢谢,你说在codewarrior中,只配置预触发A,然后在软件中编程:当定时器中断10微秒时,切换到下一个通道转换,这样可以吗?
    还有个问题就是:我刚接触codewarrior,是不是在设置中把一些总线啊,中断啊,都配置好后,就不需要在程序中改动了?在程序main中只需要写要实现的代码就可以了?什么adc.c、tpm.c都不需要改了?
     

     

    预触发A的信号源选择PIT或LPTMR或TPM都可以实现你提到的功能,只需让上图定时器的Signal那列标志每10us产生一次即可。
    通道的切换在ADC转换完成中断里修改,因为修改ADC配置必须是当前ADC配置未运行时,你说的在定时器10us中断里修改很可能触发启动ADC转换还在进行ing。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-19 15:41:45 | 显示全部楼层

    回复:kl25z-codewarrior-ADC程序定义

    还有个问题就是:我刚接触codewarrior,是不是在设置中把一些总线啊,中断啊,都配置好后,就不需要在程序中改动了?在程序main中只需要写要实现的代码就可以了?什么adc.c、tpm.c都不需要改了?


    这个是根据你的需求的,如果你想要中途降低总线频率、禁止某些中断、修改外设模式配置等,那么还是需要你在程序里里操作的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    14

    帖子

    0

    注册会员

    Rank: 2

    积分
    50
    最后登录
    1970-1-1
     楼主| 发表于 2014-8-25 14:51:02 | 显示全部楼层
    FSL_TICS_Robin 发表于 2014-8-19 15:41
    还有个问题就是:我刚接触codewarrior,是不是在设置中把一些总线啊,中断啊,都配置好后,就不需要在程序 ...

    楼主,你好,现在我已经好了配置了6个通道,不知道怎么在6个通道中进行切换,你那边有一些代码或者例程吗?我学习一下》。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-26 10:07:04 | 显示全部楼层
    jiangxueqq 发表于 2014-8-25 14:51
    楼主,你好,现在我已经好了配置了6个通道,不知道怎么在6个通道中进行切换,你那边有一些代码或者例程吗 ...

    没有现成的代码呢
    你可以在转换完成中断里完成这种操作,也可以在主函数里根据转换完成中断里给出标志去完成这种操作。


    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 06:41 , Processed in 0.108866 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表