精华内容
下载资源
问答
  • CCD时序驱动电路设计

    2009-06-16 23:57:56
    CCD时序驱动电路设计CCD时序驱动电路设计CCD时序驱动电路设计
  • 通过模拟时序来驱动LCD主要为了掌握一些时序相关的知识,将原来由fmc驱动 LCD改为了模拟时序驱动,屏幕刷新速度还是蛮快的
  • FPGA中低噪声CCD时序驱动电路设计.pdf
  • nandflash模拟时序驱动

    2019-04-09 00:28:21
    这是一nandflash模拟时序驱动,基于STM32F301写的,用的是HAL库
  • 机器人生产线的虚拟仿真运行基本上可以分为两种模式,一种是基于时序驱动的仿真运行模式,另一种是基于事件驱动的仿真运行模式。其中时序驱动运行是按照时间先后关系依次投入相关设备的一种仿真模式,这种仿真驱动...

    本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注!

    概述

    机器人生产线的虚拟仿真运行基本上可以分为两种模式,一种是基于时序驱动的仿真运行模式,另一种是基于事件驱动的仿真运行模式。其中时序驱动运行是按照时间先后关系依次投入相关设备的一种仿真模式,这种仿真驱动模式通过人为设定时间长度决定设备进入仿真运行的时机。而真实的机器人生产线都是按照信号交互的逻辑关系自动决定设备投入运行的时机,在仿真软件中这种通过信号交互的逻辑关系进行设备仿真运行的模式就被称为事件驱动仿真运行模式,一般也被称为虚拟调试(Virtual Commissioning)。与基于事件驱动的仿真运行模式相比,基于时序驱动的仿真运行模式是一种理想的仿真运行模式,在真实的机器人生产线中很少使用,但是仿真操作较为简单。

    在PDPS软件中,一般情况下都是使用基于时序驱动的仿真运行模式进行机器人生产线工艺规划,对于有信号逻辑关系要求的仿真项目还会按照基于事件驱动的仿真运行模式进行仿真。基于时序驱动的仿真运行模式一般是在软件的“Standard Mode”中实现的,而基于事件驱动的仿真运行模式是在“Line Simulation Mode”中实现的。无论是基于时序驱动的仿真运行模式,还是基于事件驱动的仿真运行模式都能实现机器人生产线中所有设备的联动运动。

    本期就为大家介绍一下基于时序驱动的机器人工作站仿真运行的操作方法。

    操作方法

    Process Simulate软件中仿真资源的时序驱动配置是在Sequence Editor窗口中实现的,此窗口默认显示在软件工作区下方。

    若是软件工作区下方没有显示Sequence Editor窗口,则可以在软件“Home”菜单栏中“Viewers”的下拉菜单中点选“Sequence Editor”,Sequence Editor窗口即可被打开显示。

    软件左侧的操作浏览树Operation Tree窗口中选择要进行时序驱动运行的仿真工艺操作节点,可以是一个设备的独立操作(Operation),也可以是整个机器人工作站的操作(Station),或者是整个机器人工作区域(Zone),也可以是整条机器人生产线(Line)。

    选择完仿真工艺操作节点后,在软件Operation菜单栏下点击“Set Current Operation”命令按钮,或者右击工艺操作节点,在弹出的快捷菜单中选择“Set Current Operation”,也可以在选择工艺操作节点之后直接按“Shift+S”快捷键,此时工艺操作节点被添加到Sequence Editor窗口中,并且工艺操作节点之间的时序关系以甘特图的形式显示。

    工艺操作节点时序甘特图以长短线段的方式直观地显示出每一台设备运动机构动作的持续时间,并且以指向线的形式标示出设备与设备之间的先后运行关系。

    对于高版本的Process Simulate软件,工艺操作节点被添加进Sequence Editor窗口之后,软件会默认按照在Process Designer软件中的工艺操作设置顺序(Pert Viewer中设置)进行时序链接。为了能够更加清晰地显示各个工艺操作节点之间的时序关系,可以通过在Sequence Editor窗口中拖动工艺操作节点对其进行排序。

    若是需要改变工艺操作节点之间的链接关系,则可以先选择有链接关系的两个工艺操作节点,再点击窗口上方的“Unlink”工具按钮,将已有的链接断开。然后再选择需要建立新链接的工艺操作节点,点击窗口上方的“Link”工具按钮将其重新链接。

    工艺操作节点是复合操作的情况下,可以点击操作节点前的“+”将其展开,同时时序甘特图中也显示出复合操作节点下子操作节点的时序。

    仿真运行

    在Sequence Editor窗口中,点击上方的“Play Simulation Forward”按钮启动仿真运行,可以看到软件工作区中工装夹具运动机构以及机器人按照设置的时序逻辑自动完成既定的仿真任务,并且仿真运行的总时长与工艺操作节点时序甘特图中显示的总时长一致。

    仿真运行结束后,点击上方的“Jump Simulation to Start”按钮,所有的仿真设备恢复原始状态,以便下一次的仿真运行。

    The End


    上一篇:PDPS软件:工装夹具机械装置运动操作的创建方法

    展开全文
  • idt公司双口RAM 70T633_VHDL时序驱动
  • EMCCD ( E lectr on Mult iply ing Charg e Co upledDevice) 是新一代高质量微光成像器件。与传统CCD( Charg e Coupled Device) 相比, 它采用了片上电子增益技术, 利用片上...目前常用的时序产生方法有以下几种:
  • 本文的目的是建议使用不同的时序驱动这些同步整流器,从而减少体二极管导电并最终提高整体系统效率。
  • EMCCD ( E lectr on Mult iply ing Charg e Co upledDevice) 是新一代高质量微光成像器件。与传统CCD( Charg e Coupled Device) 相比, 它采用了片上电子增益技术, 利用片上增益...目前常用的时序产生方法有以下几
  • 基于S3C6410的SD驱动分析文档,内含有时序图,寄存器配置,操作流程。
  • pwm模块:用到这个模块主要产生ccd的时序驱动,由于前期一直在为如何产生时序驱动而苦恼,后来无意间意识到28335有自带的pwm模块可以产生时序信号,于是就试着用这个模块。而目前的问题是,单个的信号是可以产生,...

    在项目进行的过程中遇到的问题很多,可以说从一开始就不是很顺利,不知道应该去干什么,也不知道从哪里着手。可能是问题太多,让我有点对这个失去了兴趣,感觉好难。

    pwm模块:用到这个模块主要产生ccd的时序驱动,由于前期一直在为如何产生时序驱动而苦恼,后来无意间意识到28335有自带的pwm模块可以产生时序信号,于是就试着用这个模块。而目前的问题是,单个的信号是可以产生,就是信号之间的相位差还没有办法控制,正在想办法来控制相位。

    看英文文档。。。。。。


    展开全文
  • STM32 软件模拟SPI时序驱动NRF24L01

    千次阅读 多人点赞 2017-07-11 10:07:39
    SPI通信方式相当于是一个环形结构,由CSN、MISO、MOSI、SCLK四线组成,主要是在SCLK时钟线的驱动下,进行数据转换。 接下来直接上程序配置: 使用32模拟SPI时序的IO口配置,应该注意的是MISO应该选择模拟输入方式...
      其实stm32本身的硬件SPI也很好用,但是还是想用软件来模拟一下PSI的时序。
       SPI 是一种高速的,全双工,同步串行的通信总线。SPI通信方式相当于是一个环形结构,由CSN、MISO、MOSI、SCLK四线组成,主要是在SCLK时钟线的驱动下,进行数据转换。
       接下来直接上程序配置:
       使用32模拟SPI时序的IO口配置,应该注意的是MISO应该选择模拟输入方式GPIO_Mode_IN_FLOATING。
       以下是我的初始化部分:
    
    /*用于软件模拟SPI IO口宏定义区*/
    #define SPI_CS_PORT     GPIOB
    #define SPI_CS_PIN      GPIO_Pin_11
    #define SPI_CS_LOW      (SPI_CS_PORT->BRR |=SPI_CS_PIN)
    #define SPI_CS_HIGH     (SPI_CS_PORT->BSRR |=SPI_CS_PIN)
    
    #define SPI_SCK_PORT    GPIOA
    #define SPI_SCK_PIN     GPIO_Pin_12
    #define SPI_SCK_LOW     (SPI_SCK_PORT->BRR |=SPI_SCK_PIN)
    #define SPI_SCK_HIGH    (SPI_SCK_PORT->BSRR|=SPI_SCK_PIN)
    
    #define SPI_MISO_PORT    GPIOA
    #define SPI_MISO_PIN     GPIO_Pin_8
    #define SPI_MISO_LOW     (SPI_MISO_PORT->BRR |=SPI_MISO_PIN)
    #define SPI_MISO_HIGH    (SPI_MISO_PORT->BSRR|=SPI_MISO_PIN)
    #define SPI_MISO_READ    (SPI_MISO_PORT->IDR &SPI_MISO_PIN)
    
    #define SPI_MOSI_PORT    GPIOA
    #define SPI_MOSI_PIN     GPIO_Pin_11
    #define SPI_MOSI_LOW     (SPI_MOSI_PORT->BRR |=SPI_MOSI_PIN)
    #define SPI_MOSI_HIGH    (SPI_MOSI_PORT->BSRR|=SPI_MOSI_PIN)
    
    void SPI_GPIO_Config(void)
    {
        GPIO_InitTypeDef  GPIO_InitStruct;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);
    
        //CS
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStruct.GPIO_Pin=SPI_CS_PIN;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(SPI_CS_PORT, &GPIO_InitStruct);
        //SCK
        GPIO_InitStruct.GPIO_Pin=SPI_SCK_PIN;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_Init(SPI_SCK_PORT,&GPIO_InitStruct);
        //MISO
        GPIO_InitStruct.GPIO_Pin=SPI_MISO_PIN;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_Init(SPI_MISO_PORT,&GPIO_InitStruct);
        //MOSI
        GPIO_InitStruct.GPIO_Pin=SPI_MOSI_PIN;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_Init(SPI_MOSI_PORT,&GPIO_InitStruct);  
    
        SPI_CS_HIGH;
        SPI_SCK_LOW;
    }

    模拟SPI时序
    这里写图片描述

    u8 SPI_RW(u8 data)
    {
        u8 i;
        SPI_SCK_LOW;     //先将时钟线拉低
        for(i=0;i<8;i++)
        {   
            if((data&0x80)==0x80)  //从高位发送
            {
                SPI_MOSI_HIGH;
            }
            else
            {
                SPI_MOSI_LOW;
            }
    
            SPI_SCK_HIGH;  //将时钟线拉高,在时钟上升沿,数据发送到从设备
    
            data<<=1;
    
            if(SPI_MISO_READ)   //读取从设备发射的数据
            {
                data|=0x01;     
            }
            SPI_SCK_LOW;     //在下降沿数据被读取到主机
        }
    
        return data;         //返回读取到的数据
    }
    

    写寄存器操作:`
    u8 SPI_Moni_Write_Reg(u8 Reg,u8 data)
    {
    u8 states;

    SPI_CS_LOW;  //先将CSN拉低
    
    states=SPI_RW(Reg);  //写入寄存器的地址,即图中的Cn位,并读取状态位
    
    SPI_RW(data);       // 要写入的数据
    
    SPI_CS_HIGH;
    
    return states;   
    

    }

    读寄存器操作:
    u8 SPI_Moni_Read_Reg(u8 Reg)
    {
        u8 data;
    
        SPI_CS_LOW;
    
        SPI_RW(Reg);   //先写入寄存器的地址
    
        data=SPI_RW(0); //通过写入无效数据0,将从设备上的数据挤出来
    
        SPI_CS_HIGH;
    
        return data;
    }
    接下来就是写缓冲区、读缓冲区函数 了:
    u8 SPI_Moni_Write_Buf(u8 Reg,u8 *Buf,u8 len)
    {
        u8 states;
    
        SPI_CS_LOW;
    
        states=SPI_RW(Reg);
    
        while(len>0)
        {
            SPI_RW(*Buf);
            Buf++;
            len--;
        }
        SPI_CS_HIGH;
    
        return states;
    }
    
    u8 SPI_Moni_Read_Buf(u8 Reg,u8 *Buf,u8 len)
    {
        u8 states;
    
        SPI_CS_LOW;
    
        states=SPI_RW(Reg);
    
        while(len>0)
        {
            *Buf=SPI_RW(0);
            Buf++;
            len--;
        }
    
        SPI_CS_HIGH;
    
        return states;
    }
    
    展开全文
  • /** * @brief 在 ILI9341 显示器上显示中英文字符串 * @param usX :在特定扫描方向下字符的起始X坐标 * @param usY :在特定扫描方向下字符的起始Y坐标 * @param pStr :...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,991
精华内容 17,596
关键字:

时序驱动