打印

你好,,请问一下,2.4V的脉冲信号,dsp2812的cap单元能捕获到信号吗?

[复制链接]
1260|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yimi1|  楼主 | 2016-3-31 20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zhangmangui| | 2016-4-4 22:19 | 只看该作者
建议加一级整形电路    或者电平转换电路

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yimi1 + 1 赞一个!
板凳
zhangmangui| | 2016-4-4 22:19 | 只看该作者
尤其是在工业领域内    电平转换是必须的

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yimi1 + 1 赞一个!
地板
yimi1|  楼主 | 2016-4-5 15:27 | 只看该作者
zhangmangui 发表于 2016-4-4 22:19
建议加一级整形电路    或者电平转换电路

非常感谢您的回复!!!

使用特权

评论回复
5
yimi1|  楼主 | 2016-4-5 15:37 | 只看该作者
zhangmangui 发表于 2016-4-4 22:19
建议加一级整形电路    或者电平转换电路

您好,,我采集到的信号是8V的脉冲信号,传给dsp2812的cap单元,需要在中间加一个稳压管进行降压就可以了吗?或者有其他更好的办法吗?谢谢!

使用特权

评论回复
6
zhangmangui| | 2016-4-5 22:18 | 只看该作者
yimi1 发表于 2016-4-5 15:37
您好,,我采集到的信号是8V的脉冲信号,传给dsp2812的cap单元,需要在中间加一个稳压管进行降压就可以了 ...

不建议稳压管   如果是恒定的8V幅度
建议最简单的办法   分压  然后整形处理或直接送入

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yimi1 + 1 赞一个!
7
yimi1|  楼主 | 2016-4-6 09:26 | 只看该作者
zhangmangui 发表于 2016-4-5 22:18
不建议稳压管   如果是恒定的8V幅度
建议最简单的办法   分压  然后整形处理或直接送入 ...

加个电阻分压,可以么?

使用特权

评论回复
8
zhangmangui| | 2016-4-6 22:56 | 只看该作者
yimi1 发表于 2016-4-6 09:26
加个电阻分压,可以么?

可以实现     只要保证电压幅度稳定

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yimi1 + 1 很给力!
9
zhangmangui| | 2016-4-6 22:56 | 只看该作者
yimi1 发表于 2016-4-6 09:26
加个电阻分压,可以么?

可以实现     只要保证电压幅度稳定

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yimi1 + 1 赞一个!
10
yimi1|  楼主 | 2016-4-7 15:30 | 只看该作者
zhangmangui 发表于 2016-4-6 22:56
可以实现     只要保证电压幅度稳定

非常感谢百忙之中的回复!祝工作顺利哈!!

使用特权

评论回复
11
yimi1|  楼主 | 2016-4-9 21:12 | 只看该作者
zhangmangui 发表于 2016-4-6 22:56
可以实现     只要保证电压幅度稳定

您好!我的8V方波脉冲,加了个110Ω的电阻分压后,转变成3.04V的方波脉冲,,但是方波的周期为什么变小了,也说为什么脉冲的频率变大了?
您有什么方法可以使电压降下来后,保持频率不变的么?

使用特权

评论回复
12
zhangmangui| | 2016-4-10 21:59 | 只看该作者
yimi1 发表于 2016-4-9 21:12
您好!我的8V方波脉冲,加了个110Ω的电阻分压后,转变成3.04V的方波脉冲,,但是方波的周期为什么变小了 ...

能不能将你的处理图画出来看看  
如果要好些   用比较器吧

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yimi1 + 1 很给力!
13
yimi1|  楼主 | 2016-5-9 17:40 | 只看该作者
zhangmangui 发表于 2016-4-6 22:56
可以实现     只要保证电压幅度稳定

您好,DSP-SCI,我用串口调试助手收发数据,程序设计的波特率是9600,但是串口调试助手设置成9600的,接收到的数据是乱码,,如果将串口调试助手的波特率设置成低于9600的,如4800,2400,1200,600,这些都可以接收到正确的数据,这是为什么?

使用特权

评论回复
14
zhangmangui| | 2016-5-11 22:00 | 只看该作者
yimi1 发表于 2016-5-9 17:40
您好,DSP-SCI,我用串口调试助手收发数据,程序设计的波特率是9600,但是串口调试助手设置成9600的,接收 ...

上位机上     串口助手一般都是调用插件做的波特率  
所以不会错    这个只能说明你的下位机波特率计算错了
主要可能是外设时钟的频率有误

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yimi1 + 1 很给力!
15
yimi1|  楼主 | 2016-5-12 10:03 | 只看该作者
zhangmangui 发表于 2016-5-11 22:00
上位机上     串口助手一般都是调用插件做的波特率  
所以不会错    这个只能说明你的下位机波特率计算错 ...

您好,您能帮忙看看程序,哪里错了吗?
我的系统设置的是
SysCtrlRegs.HISPCP.all = 0x0001;//HSPCLK=75MHZ
SysCtrlRegs.LOSPCP.all = 0x0002;//LSPCLK=37.5MHZ
SciaRegs.SCIHBAUD = 0x01;
SciaRegs.SCILBAUD = 0xe7; //波特率为9600

1、初始化系统模块程序:
void InitSysCtrl(void)
{
   Uint16 i;
   EALLOW;
   
// On TMX samples, to get the best performance of on chip RAM blocks M0/M1/L0/L1/H0 internal
// control registers bit have to be enabled. The bits are in Device emulation registers.
   DevEmuRegs.M0RAMDFT = 0x0300;
   DevEmuRegs.M1RAMDFT = 0x0300;
   DevEmuRegs.L0RAMDFT = 0x0300;
   DevEmuRegs.L1RAMDFT = 0x0300;
   DevEmuRegs.H0RAMDFT = 0x0300;
   
           
// Disable watchdog module
   SysCtrlRegs.WDCR= 0x0068;

// Initalize PLL
   SysCtrlRegs.PLLCR = 0xA;        ///0000 1010 CLKIN = (OSCCLK * 10.0)/2
   // Wait for PLL to lock
   for(i= 0; i< 5000; i++){}
      
// HISPCP/LOSPCP prescale register settings, normally it will be set to default values
   SysCtrlRegs.HISPCP.all = 0x0001;
   SysCtrlRegs.LOSPCP.all = 0x0002;
// Peripheral clock enables set for the selected peripherals.   
   SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
   SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;
   SysCtrlRegs.PCLKCR.bit.SCIENCLKA=1;

                               
   EDIS;
       
}
2、初始化SCI程序:
void InitSci(void)
{
        // Initialize SCI-A:
       
        EALLOW;
        GpioMuxRegs.GPFMUX.all = 0x0030;
        EDIS;
        /* loopback   8 bit data */
        SciaRegs.SCICCR.all = 0x07;        // 1 bit stop, disable parity, idle mode, 8 bits data
       
        SciaRegs.SCICTL1.all = 0x03; // enable TX
        SciaRegs.SCICTL2.all = 0x03; //
        ////////////////////9600///19200/////
        SciaRegs.SCIHBAUD = 0x01;//0x00;
        SciaRegs.SCILBAUD = 0xe7;//0xa2;
       
        SciaRegs.SCICTL1.all = 0x23;
       
        PieCtrl.PIEIER9.bit.INTx1 = 1;
        PieCtrl.PIEIER9.bit.INTx2 = 1;
        //tbd...
       

        // Initialize SCI-B:

        //tbd...
}

/********************************************************************************
        name:        int SciaTx_Ready(void)
        input:        none
        output:        i        1:        ready
                        0:        busy
*********************************************************************************/

int SciaTx_Ready(void)
{
        unsigned int i;
        if(SciaRegs.SCICTL2.bit.TXRDY == 1)
        {
                i = 1;
        }
        else
        {
                i = 0;
        }
        return(i);
}

/********************************************************************************
        name:        int SciaRx_Ready(void)
        input:        none
        output:        i        1:        new data
                        0:        none
*********************************************************************************/

int SciaRx_Ready(void)
{
        unsigned int i;
        if(SciaRegs.SCIRXST.bit.RXRDY == 1)
        {
                i = 1;
        }
        else
        {
                i = 0;
        }
        return(i);
}

3、主程序,SCI采用查询方式实现数据发送接收
#include "DSP28_Device.h"

unsigned int SCiRxData[100];
unsigned int i,j,SendFlag;
void main(void)
{
        InitSysCtrl();                        //初始化系统

        DINT;                                        //关中断
        IER = 0x0000;
        IFR = 0x0000;

        InitPieCtrl();                        //初始化PIE中断
        InitPieVectTable();                //初始化PIE中断矢量表
    InitSci();                                //初始化SCIA寄存器
   
    for(i = 0; i < 100; i++)//初始化变量
    {
            SCiRxData = 0x0000;
    }
    i = 0;
    j = 0;
    SendFlag = 0;
   
    #if SCIA_INT                        //设置中断服务程序入口地址/
        EALLOW;                       
        PieVectTable.TXAINT = &SCITXINTA_ISR;
        PieVectTable.RXAINT = &SCIRXINTA_ISR;
        EDIS;   
        IER |= M_INT9;                        //开中断
        #endif
       
        EINT;                                   // Enable INTM
        ERTM;                                        // EnableDBGM
   
        for(;;)
        {
                if((SciaTx_Ready() == 1) && (SendFlag == 1))
                {
                        SciaRegs.SCITXBUF = SCiRxData;
                        SendFlag = 0;
                        i++;
                        if(i == j)
                        {
                                i = 0;
                                j = 0;
                        }
                }
               
                #if !SCIA_INT
                if(SciaRx_Ready() == 1)
                {
                        SCiRxData[j] = SciaRegs.SCIRXBUF.all;
                        SendFlag = 1;
                        j++;
                        if(j == 100)
                        {
                                j = 0;
                        }
                }
                #endif
        }

}        

使用特权

评论回复
16
zhangmangui| | 2016-5-12 22:00 | 只看该作者
yimi1 发表于 2016-5-12 10:03
您好,您能帮忙看看程序,哪里错了吗?
我的系统设置的是
SysCtrlRegs.HISPCP.all = 0x0001;//HSPCLK=75M ...

你好   看看我的分享   里面有代码
SCI等都是调试通的
https://bbs.21ic.com/icview-1010062-1-1.html

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yimi1 + 1 很给力!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

15

帖子

1

粉丝