发 帖  
原厂入驻New
[问答] 在PORTD上把一个8FET驱动器转换为开路漏极
113 处理器
分享
我在外围设备上看到了一些奇怪的东西,但不是这样的。我在PORTD上把一个8FET驱动器转换为开路漏极,上拉1OK到+5V。(只是需要提高Voh以获得更多的FET输入余量)。他们都在转换前工作,之后除了5位以外都工作。写成:PORTDSET=0x0020;//SOLA lo(反转)和锁存器没有写入。但是如果我单步通过指令,它就会写入。如果我添加**不少于3对**的时间浪费:PORTDSET=0x0020;//SOLA lo temp+;temp+;temp+;temp+;temp--;temp--;temp--;temp--;temp--;如果temp不稳定,它就会写入。垃圾编译成对o。0x9D000FB4:LHU V0,16(S8)0x9D000FB8:ADDIU V0,V0,10x9D000FBC:SH V0,16(S8)0x9D000FBC:SHUV0,16(S8)0x9D000FB4:LHU V0,0x9D000FB4:LHU V0,10x9D000FB4:LHU V0,10x9D000FB4:LHU V0,16X9D000FB8:LHU V0,16(S8)0x9D000FB8:LHU V0,16(S8)0X9D000FB8:LHU V0,16(S8)0000000000X9D9Dpped设备,我测量总线负载。运行在64MHzData兑现的处理器是PIC32MX575F512H,禁用CHECONCLR=0x00000300;//无数据缓存CHECONSET=0x00030;//预取可缓存和非缓存区域CHECONSET=0x00002;//002=两个等待状态(64MHz时钟&30我不能让像这艘船那样笨拙——有人见过类似的东西吗?PS-匹配清晰可靠。
0
2020-4-3 09:30:51   评论 分享淘帖 邀请回答
7个回答
你以前没有遇到过RMW(读修改写)吗?解决方案很简单,永远不要写入端口寄存器,写入等效的LAT寄存器。这就是为什么他们在那里。
2020-4-3 09:43:49 评论

举报

从PIC32家庭参考手册,第12节来看,这是很清楚的。I/O端口--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------配置成输出的那些I/O端口管脚被更新。*****对PORTx寄存器的写与对LATx寄存器的写实际上是相同的。从PORTx寄存器读取应用于端口I/O管脚12.2.3寄存器的同步信号,用于配置锁存器功能(LATx)LATx re寄存器(PORTx数据锁存器)保存写到端口I/O引脚的数据:·写到LATx寄存器将数据锁存到相应的端口I/O引脚。配置成输出的那些I/O端口管脚被更新。——从LATx寄存器读取保存在PORTx数据锁存器中的数据,而不是从端口I/O管脚读取数据------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------写下来。
2020-4-3 09:55:46 评论

举报

是的,它写到锁存器,但它从端口读取。阅读是问题所在。该引脚可以加载和出现在错误的逻辑。或者,如果负载是电容性的,逻辑在过渡期间将是错误的。手册中的措辞是误导性的。
2020-4-3 10:03:59 评论

举报

使用LAT设置的一个很好的理由。我确实看到了一个可能的端口问题,比如端口设置,但是LATDSET=0x020;/SOLA-LoToM+++;TEMP+++;TEMP+-;TEMP--;TEMP--;TEMP-,工作原理相同,包括在LAT集合之前必须保留数据的时间长度。总线负载为10K。9pF。(在规范中允许50个PF)有8个相同的FET驱动器,7个是正常的。这是通过PCB复制的。我将修改总线加载,看看它是否对行为有任何影响。
2020-4-3 10:22:22 评论

举报

答对了!如果未将位设置为开漏极,则SET不需要延迟。如果开漏极上拉是2K,则SET不需要延迟。如果开漏极上拉为10K,则SET需要显著的延迟。因此,设置端口位以开漏极似乎消除了锁存器中的缓冲(也许它确实如此)。直接将I/O管脚连接到锁存器触发器)以便10K的上拉电流不足以在总线写入周期结束之前使数据线超过Vihmin阈值。而且PortD位5锁存器的几何结构有点奇怪,它不会像以前那样容易充电。可能吧。我想我再也走不动了——但至少我可以忍受在制造业中更难重现的提速。谢谢你收听这个奇怪的独白。
2020-4-3 10:37:01 评论

举报

这里没有什么神秘的。”开路漏极就是指锁存器输出只驱动低电平,而不是高电平。也就是说,输出缓冲器中的上部晶体管被永久地关断。在延迟之后你在做什么?对LAT的写入总是“取”,但是如果在引脚上升到足够高的水平之前在PORTD上执行一些其他RMW操作,那么锁存器中的位将被再次清除。这就是RMW的全部内容。因此,您必须更改所有的写入地址来解决LATD,而不是PORTD,而不仅仅是写入比特5。
2020-4-3 10:47:27 评论

举报

好的-我确实赞成这个建议,谢谢。是后续的RMW捕获了还不高的级别,尽管文档中有这些单词,但是还是有差别的。PlusPORTSET生成0x9D000F98:SW V1,24792(V0)LATSET生成0x9D000F98:SW V1,24808(V0),所以reg写差别是重现的外加电流源只是加快了输出线。批量编辑即将到来。
2020-4-3 11:05:15 评论

举报

只有小组成员才能发言,加入小组>>

102个成员聚集在这个小组

加入小组

创建小组步骤

关闭

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

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