小弟刚学钣金可以折弯大弧面吗不知道园弧怎么做多谢各位大哥指点

光电隔离电路,请各位指点错误。多谢! - 捷配电子市场网
光电隔离电路,请各位指点错误。多谢!
作者:tms_02 栏目:
光电隔离电路,请各位指点错误。多谢!小弟设计了该电路,右端输入为+、-12V交替变化的数字信号,经光电隔离后左端要得到相同的信号,但总觉得此电路有问题,可自己又说不来到底问题再哪里,请各位高手多多指教!谢谢!
作者: conwh 于
17:41:00 发布:
你这里的问题还不少,1)LED端没有限流电阻,也没有信号源(也可能是检测电源的);2)输出给谁?。总之就是画着玩
作者: wzfang 于
18:01:00 发布:
回按F在路,+12v出永h做不到,左接收管bO需加阻后有-12v出
作者: tuwen 于
16:30:00 发布:
光耦三极管基极应该断开两个光耦三极管的基极都应该断开,让它悬空。按你图中的接法,三极管会烧毁。D3可以省去,R1换大一些的电阻,例如10K。R2可以换小一些,例如330欧姆。-12V电源最好也串一个与R2一样大的电阻,主要起保护作用。D1D2也可以省去,两个光耦输入二极管反向并联,然后串一个限流电阻,例如。
作者: wxiaofan 于
19:56:00 发布:
作者: tms_02 于
14:37:00 发布:
多谢各位指点,电路有所改动!多谢各位指点,上面所用的光耦的内部结构不是这样的,应该是下面这副图中的结构。另外,我本意想得到的情况是:当从A端(右边)输入+12V信号时,U2导通,U1截止,从而B端(左边)得到相应的+12V信号;当A端输入-12V信号时,U1导通,U2截止,从而B端(左边得到-12V信号。其中,二极管D1、D2是为了降低加在光耦的发光二极管上的反向压降过大,起到保护作用,因为该光耦的输入端最大反向压降只有5V,而本电路中最高可能达到24V。D3是防止当B端+12V时形成对地通路,现在把R2改了接法,U2的光电三极管端接成射极电压跟随器的形式(不知可否?请各位指教),D3好像可以不用了。请各位多多指教,谢谢了!
作者: dengm 于
14:51:00 发布:
d3 为 LED 不是, A 点要加限流电阻&
作者: conwh 于
20:04:00 发布:
LZ没有认真看回复,。冒烟了&
作者: 李冬发 于
9:06:00 发布:
你还是找个现成电路吧,不能这样用的&
作者: ad990342 于
11:09:00 发布:
???为什么不直接输出,用那么复杂的电路.转换过来过去的.我看没有那个必要.两个管是不是大功率、瞬间导通的如果是的话,就要加(保护)防击穿电路.给c-e极加一个120p的电容.
作者: tms_02 于
14:09:00 发布:
多谢各位指点!多谢各位指点,不过,我的电路信号两边必须隔离,不然我夜不设计这种隔离电路了,不好意思忘了说明,我是想把这个电路用来隔离串口信号。电路已经更改如下。不知各位有什么好的建议没有?请多多指教。
作者: conwh 于
21:15:00 发布:
还是老老实实地干活吧,别瞎折腾了。要搞就从基础学起,从头来这个图还是没头没尾的。
作者: tms_02 于
16:30:00 发布:
致conwh兄conwh兄:兄台说的很对,我也正是为了学习才在此向各位请教的,如果阁下认为不妥,有碍于贵人的眼球的话,小弟在此向你赔不是了,还望阁下多多包涵。我想,对于任何一个初学者来说,都会有很多问题存在,而这些问题往往是象阁下这样的高手认为幼稚或不屑一顾的,不过,话说回来,阁下当年肯定也经历过这样的阶段吧?阁下虽然是高手,但是,肯定不是天才!不可能生来就懂的这些东西,对吧?当年阁下处于初学阶段的时候,是否曾经遇到过象阁下这样的高手指点我一样的点拨呢?兄台两次不厌其烦的点拨,小弟感激不尽!阁下的教导小弟我会铭记于心的,多谢多谢了!^_^
作者: tracyf 于
21:07:00 发布:
怪怪感觉有点怪:正12V输入,都没构成回路,光偶怎么导通呢?^_^请各位大哥指点.
作者: 刘远进 于
22:56:00 发布:
CTR问题CTR 100%合适吗?限流电阻不是随便加的,仔细看看的数据手册吧,根据二极管侧的电流大小来选R3,再根据CTR来选R1、R2。
作者: 雄鹰 于
23:28:00 发布:
作者: tms_02 于
16:22:00 发布:
远进兄多谢远进兄指点,电阻我是根据你说的方法计算的,计算出来的值大概就是这样,的资料上有一个公式,我把CRT取了最小值,但是不知道这样到底可不可以?请指点,谢谢
讨论内容:
Copyright &
www.dzsc.com 浙ICP证030469号温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
金牛双子性格逐渐显现!
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(135)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_086074',
blogTitle:'多谢各位',
blogAbstract:'今年生日有点特别,\r\n皆因我已经工作半年多了,\r\n祝贺我的,\r\n多了身边一起工作的同事。\r\n…………\r\n其实,\r\n对于生日这事,\r\n个人都看得很平淡。\r\n想要的,\r\n不一定是要一些名贵的礼物,\r\n最想要的是,\r\n能够和家人、朋友一起分享,\r\n趁机会好好聚一聚。\r\n…………\r\n第一个惊喜来自4月29日。\r\n没想到会提前两天就收到礼物,\r\n一份相当贴心的礼物。\r\n
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}蜂鸟手机端
【游泉】多谢各位前辈指点,受益匪浅
多谢各位前辈指点,受益匪浅
又处理了一下,
【游泉】多谢各位前辈指点,受益匪浅
多谢各位前辈指点,受益匪浅
又处理了一下,
0已被设置为封面
说点什么...帖子很冷清,卤煮很失落!求安慰
手机签到经验翻倍!快来扫一扫!
当注册表中找不到Msahci项,怎么开启32位windows7下硬盘ahci模式?
15615浏览 / 13回复
网上找了很多,但是大多用的是修改注册表,但是我注册表里没有Msahci项,显然不行了。
后来又找了个这种方法如:http://www.360doc.com/content/10/447_.shtml(由于复制不了,麻烦各位高人看下),但是咱们的精盾芯片好像不是这个样,用不了啊,不知道有没有高人指点小弟一下啊!
对 楼主 jiuzhoushenmu 说:=========================谁说不是……你自己好好再看清楚路径
你装WIN7的时候把BIOS改成ACHI模式不就行了吗
系统说是最新驱动,我就无懒了啊。汗
对 第2楼 crack4000 说:=========================主要不想重装,如果实在没办法,那就重装了。
求高手再指点。
刚刚又试了下,话说我要装那个驱动啊?
下个驱动精灵驱动人生之类的就是了...
我的主板BIOS里没有SATA MODE选项。
没办法,改不了。
I945的主板,不知道能不能刷BIOS
对 楼主 jiuzhoushenmu 说:=========================单击“开始”,在“开始搜索”框中键入 regedit ,然后按 Enter。 如果显示“用户帐户控制”对话框,请单击“继续”。 找到并单击下面的注册表子项: HKEY_LOCAL_MACHINE-System-CurrentControlSet-Services-msahci(晕,“”显示不出来,我只能用“-”代替了)在右窗格中,右键单击“名称”列中的“Start”,然后单击“修改”。 在“数值数据”框中,键入 0 ,然后单击“确定”。在“文件”菜单上,单击“退出”以关闭注册表编辑器重启电脑到BIOS,修改硬盘模式为AHCI,就能进系统了。然后从驱动光盘里装上 10. Rapid Storage 即可注册表是树形目录结构,你需要按照路径的顺序一级一级的展开才能找到的
虽然还是没找到,但是非常感谢!
我也没找到,怎么办啊?
你修改一下storahci项下的start键值为0试一下。我也是修改了iaStorAV和iaStorV项下的start键值为0后不管用,win8.1依然开机后蓝屏,直至修改了storahci项下的start键值为0后,才解决问题!开机自动安装了AHCI的驱动!
刚入手了SSD,围观……
可能感兴趣的板块:
用户名/注册邮箱/注册手机号
其他第三方号登录职业生涯、技术、生活......,欢迎评论、留言!
如何消除CACHE对DMA的影响?
各位看官,阅读之前,请帮忙点击一下,多谢!
嵌入式系统中的CACHE问题
郑州解放军信息工程大学(450002) 陈曦 李汉宁
随着社会的发展、人们生活水平的提高,人们对嵌入式计算机应用的要求也越来越高。因此,对嵌入式系统的性能要求也越来越高。明显体现在嵌入式系统的CPU速度的不断提高上。但问题也随之而来,嵌入式CPU的主频不断地提高,一方面加强了CPU的处理能力,另一方面,在速度上造成了与慢速的系统存储器极不相配的情况,从而影响了整个系统的性能。
为了解决这个问题,引入了CACHE技术。CACHE是一种高速缓冲存储器,是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。通过在主存和高速CPU之间设置一个小容量的高速存储器,在其中存放CPU常用的指令和数据,CPU对存储器的访问主要体现在对SRAM的存取,CPU可以不必加等待状态而保持高速操作。采用CACHE技术,解决了CPU与主存之间速度不匹配的问题;但它又带来了一些其它问题,如本文将提到的一致性问题。
1 问题的发现与原因
在进行某嵌入式系统项目的开发过程中,有一个环节需要使用DMA方式进行数据传输。当程序运行后,发现传到目的地的数据块中经常会有一些错误的字节。如:数据本应为0001 02 03 04 05 06 07 08 09 0A 0B ...(16进制),结果却是00 01 02 03 00 00 00 00 08 09 0A0B ...。在某些环节也出现了类似的问题。例如,通过HDLC通道向外发送数据,发送的总是缓冲区初始化时的内容,实际要发送的数据总是发不出去,但使用调试工具看内存中的数据,却是正确的。
经过一段时间的调试,发现出现这种现象的环节都使用了DMA传输数据。在通过HDLC通道发送数据的例子中,HDLC通道内部也是用DMA方式从内存直接读数据并向外发送。经过分析,认为问题的原因是出在CACHE上,是由于CACHE数据与内存数据的不一致性造成的。
所谓CACHE数据与内存数据的不一致性,是指:在采用CACHE的系统中,同样一个数据可能既存在于CACHE中,也存在于主存中,数据一样则具有一致性,数据若不一样就叫做不一致性。具体表现在两个方面:(1)更新时可能CACHE中的数据更新,而主存未更新,则造成数据丢失;
(2)在有DMA控制器的系统和多处理器系统中,有多个部件可以访问主存。这时,可能其中有些部件是直接访问主存,也可能每个DMA部件和处理器配置一个CACHE。这样,主存的一个区块可能对应于多个CACHE中的一个区块。于是会产生主存中的数据被某个总线部件更新过,而某个CACHE中的内容未更新,造成数据过时。2 问题的分析
要解释这个问题,首先要了解CACHE的工作模式。CACHE的基本工作模式有两种:write-through模式和 copyback模式。在write-through模式下,所有的写操作都写入CACHE和RAM,保证了CACHE和RAM的一致。然而,每次对RAM都有写操作会使处理器的处理能力降低,并且占用总线带宽。在copyback模式下,写操作只写入CACHE,不写入RAM,从而提高了处理器性能和总线带宽。copyback模式下,CACHE中的内容只有在需要的时候才写到RAM中。当CACHE中无可用空间时,一般使用最近最少使用算法(LRU)来决定哪一个CACHE项被替换。copyback模式提供了很高的系统性能,但是需要更多的一致性作保证。为了便于理解,给出一个使用了CACHE的系统的逻辑框图,如图1所示。该系统中两个地方会发生CACHE的不一致性:
(1)数据CACHE / RAM
数据CACHE与RAM之间的问题源于处理器和其他总线控制器对RAM的异步读写访问。DMA设备和其他总线控制器对RAM的访问是引起CACHE一致性问题的主要原因,这个问题可以通过在程序中加入一些代码来解决。?
(2)共享CACHE LINE
当一个CACHE LINE被两个以上的线程共享时,也会产生一致性问题。当某个线程使一个CACHE LINE无效时,这个CACHE LINE中的一些项可能属于另外一个线程。这个问题也可以通过一定的方法来避免,只要在分配内存时大小是CACHELINE大小的整数倍即可。
在哈佛体系结构、copyback模式和无软件干预的前提下,最佳的保持一致性的方法就是使用具有总线监听能力的硬件。将CACHE、RAM、DMA设备和其它所有的总线主控设备都连到一个物理总线上,以使CACHE可以对该总线上的总线交互过程进行监听,CACHE将对总线上的地址周期和控制(读/写)比特监听,数据周期则被延迟到需要时才进行。当CACHE中的一项被一个异步操作修改时,该CACHE项就会被标为无效。如果处理器对一个已经被标为无效的CACHE项进行访问时,CACHE就会从RAM中重新载入有效数据。在copyback模式下,处理器对CACHE进行写操作时,RAM相应地址中的内容就变成过时。如果另外一个设备想访问RAM中的这部分内容,CACHE就会抢占该访问周期,将有效的数据写入RAM。然后被抢占的访问周期重新开始并将读到RAM中的有效数据。但是,目前提供监听能力的板子并不多。
3 解决的方法
根据上面的分析和讨论,可见问题正是由数据CACHE / RAM的不一致性引起的。虽然关掉CACHE就可以解决一致性的问题,并且能够减小程序开发的复杂度。但是一个高性能的系统是需要CACHE的,关掉CACHE会大大降低系统的性能。因此,本文仅讨论在程序中加入代码来克服一致性问题的方法。可以采用以下几种加入代码的方法来解决一致性的问题(本文使用WIND RIVER公司的嵌入式实时多任务操作系统VxWORKS,下面的函数都是VxWORKS提供的):
(1)对于时间上不是那么关键的程序段,可以先用下面的代码维护数据CACHE的一致性。
cacheInvalidate (DATA_CACHE,address,bytes);??/* 输入缓冲区*/
cacheFlush(DATA_CACHE,address,bytes);?? /*输出缓冲区*/
(2)对于时间上比较关键的程序段?采用如下原则:在每次使用输出缓冲区前将其更新;在每次使用输入缓冲区前使其无效。
将缓冲区标示为"non-cacheable"可以防止一致性问题,这需要MMU支持。在分配缓冲区时,将其标示为"non-cacheable"即可。然而,动态缓冲区在释放时要标为"cacheable",否则内存总会产生大量的缓冲区碎片。
下面给出一个高性能的驱动程序例子,它把更新/无效的概念进行了扩展。不是对整个CACHE系统,而是对每一个缓冲区都这样做。即通过分配对CACHE安全的缓冲区,在一个缓冲区的基础上操作,从而防止了不需要的更新/无效操作。在这个例子中使用了CACHE库中的函数cacheDMAMalloc(),宏CACHE_DMA_INVALIDATE和CACHE_DMA_FLUSH实现一致性。在第4行调用函数cacheDMAMalloc()后,如果指针返回为非空,则说明分配到了一块对于一致性问题来说是安全的缓冲区。第7行驱动程序在缓冲区中写入要传给外部设备的数据,在第9行准备传给外设之前,驱动程序必须更新数据CACHE以保证要传的数据是在内存中,而不是在CACHE中。 当驱动程序准备读外设传给内存的数据,在第13行驱动程序处理这些数据之前,必须使数据CACHE中对应于输入缓冲区的那部分无效以消除这些包含过时内容的条目。之后,驱动程序才能安全地处理从内存中取来的输入数据。
1:?STATUS drvExample(pBuf)?2:?void *pBuf? /*缓冲区指针 */3:?{4:? pBuf = cacheDMAMalloc (BUF_SIZE);??5:? if (pBuf == NULL)?6:? return (ERROR);?? /*内存分配失败*/7:?/*其它初始化代码和向发送缓冲区填数据*/8:? CACHE_DMA_FLUSH (pBuf,BUF_SIZE);??9:? drvWrite (pBuf);?? /*向外设发送数据*/10:?…… /*其它代码 */11:?drvWait(); ??? /*等待外设来的数据*/12:?CACHE_DMA_INVALIDATE (pBuf,BUF_SIZE);13:? /*处理外设来的数据 */14:?cacheDMAFree (pBuf);?? /*释放内存 */15:?return (OK);?? 16:?}
――――――――――――――――――――――――――――――――――――――
mpc8260中的dma在cache打开时运行不正常,原因何在? &--- 〖回复该帖子〗
It is possible to make a driver more efficient by combining cache-safe buffer allocation and cache-entry flushing or invalidation. The idea is to flush or invalidate a cache entry only when absolutely necessary. To address issues of cache coherency for static buffers, use cacheDmaMalloc( ).
作 者: ok-27 11:20:32 ※
Re:Re:mpc8260中的dma在cache打开时运行不正常,原因何在? &--- 〖回复该帖子〗
I have used cacheDmaMalloc( ) to allocate the buffer used by dma ,but it still can"t work .
perhaps ,i also should use cacheDrvFlush( ) or cacheDrvInvalidate( ) . If they are needed ,please tell me how to use them .
――――――――――――――――――――――――――――――――――――――
没有更多推荐了,}

我要回帖

更多关于 钣金可以折弯大弧面吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信