打印

后面的这句话是什么意思

[复制链接]
760|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

这是英文资料:
Writing this register high
enables the global bypass (BYP = 1 in Figure 6-1). If the
Drive mode is set to digital High Z (DM[2:0] = 010b), then
the pin is selected for global input (PIN drives to the Global
Input Bus). In non-High Z modes, the block is selected for
global output (the Global OutputBus drives to PIN), bypass-ing the data register value (assuming I2C Enable = 0).
If the PRTxGS register is written to zero, the global in/out
function is disabled for the pin and the pin reflects the value
of PRT_DR.
这里的意思是说当PRT1GS为高时,开全局bypass。此时如果驱动模式是高z的时候时,为全局输入。不是高z的时候,
为全局输出。后面的这句话bypass-ing the data register value (assuming I2C Enable = 0).是什么意思呢。

使用特权

评论回复
沙发
houcs| | 2019-11-9 09:32 | 只看该作者

没说明白啊,什么里面的

使用特权

评论回复
板凳
chenjunt|  楼主 | 2019-11-9 09:36 | 只看该作者

使用特权

评论回复
地板
ousj| | 2019-11-9 09:38 | 只看该作者
PRTxGS 是用来控制 IO 引脚是否连接到全局输入/输出总线的寄存器。使用该寄存器就可以将外部数字信号通过 IO 和全局输入总线引入芯片内部 (或者将内部数字信号通过全局输出总线和 IO 口引出。

使用特权

评论回复
5
chenjunt|  楼主 | 2019-11-9 09:42 | 只看该作者
哦,能举个例子吗

使用特权

评论回复
6
xxmmi| | 2019-11-9 09:45 | 只看该作者
以 P0[0] 为例,当 PRT0DR |= 0x01 被执行时,如果 P0[0] 当前的驱动模式为 HIGH-Z, 那么 P0[0] 被连接到全局输入总线,用作输入。 如果 P0[0] 当前的驱动模式为其他驱动模式,那么 P0[0] 被连接到全局输出总线,用作输出。 用作输出时, PRT0DR 的第 0 为(P0[0] 对应的位) 被旁路(bypass), 页就是说我们没有办法通过改变 PRT0DR 的0位来修改 P0[0] 的输出。

使用特权

评论回复
7
zwll| | 2019-11-9 09:47 | 只看该作者

如果P0[0]被用作 I2C 引脚的话,P0[0]的当前输出只由 I2C 自己控制,用户也不可更改。

使用特权

评论回复
8
chenjunt|  楼主 | 2019-11-9 09:54 | 只看该作者
您在哪看的呢

使用特权

评论回复
9
stly| | 2019-11-9 09:56 | 只看该作者
具体可以看一下下面 IO 口输出部分的内部结构图,然后就好理解了。

使用特权

评论回复
10
chenjunt|  楼主 | 2019-11-9 09:58 | 只看该作者
有图吗

使用特权

评论回复
11
chenjunt|  楼主 | 2019-11-9 10:02 | 只看该作者

"用作输出时, PRT0DR 的第 0 为(P0[0] 对应的位) 被旁路(bypass), 页就是说我们没有办法通过改变 PRT0DR 的0位来修改 P0[0] 的输出。"这句话还是没有搞懂。请帮忙解答。

使用特权

评论回复
12
renyaq| | 2019-11-9 10:11 | 只看该作者
这么说吧,如果一个 Pin 被连到了全局输出总线 (Global Out), 那么该 Pin 的输出状态完全由输出总线决定,用户无法更改。

使用特权

评论回复
13
xxrs| | 2019-11-9 10:15 | 只看该作者
例如一个PWM8 模块, PWM 的输出通过全局输出总线连到了 P0[0] 上, 那么 P0[0] 的输出状态完全由该模块决定。我们无法通过修改 PRTxDR 寄存器控制 P0[0] 输出高或者低。

使用特权

评论回复
14
chenjunt|  楼主 | 2019-11-9 10:21 | 只看该作者
懂了,也就是说为输出模式的时候没有发通过PRTODR来改变P0[0]的状态。

使用特权

评论回复
15
liuzaiy| | 2019-11-9 10:23 | 只看该作者
是的,从最上面我上传的框图里也可以看到。 当 BYP(bypass) 使能后, MUX 直接选通了 Global Output Bus, PRTxDR 被屏蔽了。

使用特权

评论回复
16
chenjunt|  楼主 | 2019-11-9 10:27 | 只看该作者
你帮我看看这个程序。我是想实现p0口控制p2口的led。
#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules


void main(void)
{
        int port0,port2;
        // M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts

        
        port0 = PRT0DR;
        //port0 &= 0xd0;
        port2 = port0;
        PRT2DR = port2;
        
        // Insert your main routine code here.
}
我不知道怎么去设置GPIO为输入和输出,是不是用PRTXDR  

使用特权

评论回复
17
morrisk| | 2019-11-9 10:29 | 只看该作者
设置 GPIO 的输入输出一个方法是在 Designer 里面对每个 Pin 的驱动状态进行设置。 另一个方法使用 PRTxDM0,PRTxDM1 和 PRTxDM2 设置 pin 脚的驱动模式。 一般情况下数字输入设为 HIGH-Z, 输出设为 Strong.

使用特权

评论回复
18
xxmmi| | 2019-11-9 10:34 | 只看该作者

关于 IO 口的使用,可以参考 AN2094 - PSoC® 1 - Getting Started with GPIO
http://www.cypress.com/?rID=2900

使用特权

评论回复
19
zwll| | 2019-11-9 10:41 | 只看该作者

#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules

使用特权

评论回复
20
chuxh| | 2019-11-9 10:44 | 只看该作者

使用 Designer 里面的管脚配置窗口和在程序里设置寄存器没有权限高低之分。管脚配置窗口只能决定芯片初始化时的引脚状态,如果你用些寄存器的方法修改,引脚状态就会改变。
我觉得根本问题可能不是这里。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

7868

帖子

5

粉丝