GPIO端口2引脚问题

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
8帖/ 0新
最后发表
理查德Legault
离线
最后看到:3年11个月前
加入:2017年3月1日18:54
GPIO端口2引脚问题

不能切换GPIO端口引脚0,1,2,4。

端口0,1,3工作正常。

端口2-3是UART RX引脚,可以作为输入。

物理上引脚是浮动的,没有连接到引脚0,1,2,4
该部件标记为DA14681 01000 1649NCAB,这是QFN部件,因此所有端口都应该可用。

我看到从测试功能和物理输出两个问题探究
1)当引脚状态为1主板上的输出仍为0有什么我错过了我的配置。在代码体的端面。
2)为什么引脚内部状态保持0引脚2和4时,代码已运行,以设置它的活动。

从测试功能的输出:

端口2引脚0状态= 1,模式= 300,FUNC = 0
端口2引脚1状态=1,模式=300,func=0
端口2端子2 = 0的状态,模式= 300,FUNC = 0
端口2引脚3状态=1,模式=0,func=1
端口2端子4状态= 0,模式= 300,FUNC = 0
Inactive: port 2 pin 0 state=0, mode=300, func=0
Inactive: port 2 pin 1 state=0, mode=300, func=0
Inactive: port 2 pin 2 state=0, mode=300, func=0
Inactive: port 2 pin 3 state=1, mode=0, func=1
Inactive: port 2 pin 4 state=0, mode=300, func=0
Active: port 2 pin 0 state=1, mode=300, func=0
活性:端口2针1状态= 1,模式= 300,FUNC = 0
Active: port 2 pin 2 state=0, mode=300, func=0
活性:端口2销3状态= 1,模式= 0,FUNC = 1
活性:端口2销4状态= 0,模式= 300,FUNC = 0
Inactive: port 2 pin 0 state=0, mode=300, func=0
Inactive: port 2 pin 1 state=0, mode=300, func=0
不活动的:端口2管脚2 = 0的状态,模式= 300,FUNC = 0
Inactive: port 2 pin 3 state=1, mode=0, func=1
Inactive: port 2 pin 4 state=0, mode=300, func=0


静态空白测试(空白)

hw_gpio_set_pin_function(0,0, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO);
hw_gpio_set_pin_function(2, 1, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO);
hw_gpio_set_pin_function(2, 2, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO);
// hw_gpio_set_pin_function(2,3,HW_GPIO_MODE_OUTPUT,HW_GPIO_FUNC_GPIO);
hw_gpio_set_pin_function(2, 4, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO);
printf (" HW_GPIO_MODE_OUTPUT = % x, HW_GPIO_FUNC_GPIO = % x, HW_GPIO_MODE_INPUT = % x r \ n \”,
HW_GPIO_MODE_OUTPUT,HW_GPIO_FUNC_GPIO,HW_GPIO_MODE_INPUT);
对于(中间体I = 0;我<5; i ++在)

HW_GPIO_FUNC FUNC;
HW_GPIO_MODE模式;
hw_gpio_get_pin_status(2,i);
hw_gpio_get_pin_function(2我模式函数);
的printf( “端口2销%d状态=%d,模式=%的x,FUNC =%×\ n \ r”,I,状态,模式FUNC);
fflush(stdout);

hw_gpio_set_inactive (2,0);/ / P2-0
hw_gpio_set_inactive(2,1);
hw_gpio_set_inactive (2, 2);
hw_gpio_set_inactive(2,4);
对于(中间体I = 0;我<5; i ++在)

HW_GPIO_FUNC FUNC;
HW_GPIO_MODE模式;
hw_gpio_get_pin_status(2,i);
hw_gpio_get_pin_function(2我模式函数);
的printf( “无效:端口2销%d状态=%d,模式=%的x,FUNC =%×\ n \ r”,I,状态,模式FUNC);
fflush(stdout);

hw_gpio_set_active (2,0);/ / P2-0
hw_gpio_set_active(2,1);
hw_gpio_set_active(2,2);
hw_gpio_set_active(2、4);
对于(中间体I = 0;我<5; i ++在)

HW_GPIO_FUNC FUNC;
HW_GPIO_MODE模式;
hw_gpio_get_pin_status(2,i);
hw_gpio_get_pin_function(2我模式函数);
的printf( “活性:端口2销%d状态=%d,模式=%的x,FUNC =%×\ n \ r”,I,状态,模式FUNC);
fflush(stdout);

hw_gpio_set_inactive (2,0);/ / P2-0
hw_gpio_set_inactive(2,1);
hw_gpio_set_inactive (2, 2);
hw_gpio_set_inactive(2,4);

对于(中间体I = 0;我<5; i ++在)

HW_GPIO_FUNC FUNC;
HW_GPIO_MODE模式;
hw_gpio_get_pin_status(2,i);
hw_gpio_get_pin_function(2我模式函数);
Printf ("inactive: port 2 pin %d state=%d, mode=%x, func=%x\n\r",i,status, mode,func);
fflush(stdout);


设备:
TR_Dialog
离线
最后看到:2个月2周前
工作人员
加入:2014-06-30 23:52
你好理查德:

你好理查德:

- 您是否使用了对话框开发工具包,或者您自己的原型。

- 会不会是可以测试这个使用对话框的devkit和SDK的项目之一。郁可你的日常添加到项目并对其进行测试。

谢谢,

TR_DIALOG

理查德Legault
离线
最后看到:3年11个月前
加入:2017年3月1日18:54
我们使用的是专业开发

我们使用的是PRO开发板。

我使用了freertos_retarget,得到了类似的结果。示波器显示这些引脚上没有过渡。
和1,2,4入住0即使设置成活动报告的状态。
同样的结果既专业开发板。

端口2引脚0状态=0,模式=300,func=0
端口2引脚1 state=0, mode=300, func=0
端口2端子2 = 0的状态,模式= 300,FUNC = 0
端口2引脚3状态=1,模式=0,func=1
端口2端子4状态= 0,模式= 300,FUNC = 0
Inactive: port 2 pin 0 state=0, mode=300, func=0
Inactive: port 2 pin 1 state=0, mode=300, func=0
Inactive: port 2 pin 2 state=0, mode=300, func=0
Inactive: port 2 pin 3 state=1, mode=0, func=1
Inactive: port 2 pin 4 state=0, mode=300, func=0
Active: port 2 pin 0 state=1, mode=300, func=0
Active: port 2 pin 1 state=0, mode=300, func=0
Active: port 2 pin 2 state=0, mode=300, func=0
活性:端口2销3状态= 1,模式= 0,FUNC = 1
活性:端口2销4状态= 0,模式= 300,FUNC = 0
Inactive: port 2 pin 0 state=0, mode=300, func=0
Inactive: port 2 pin 1 state=0, mode=300, func=0
不活动的:端口2管脚2 = 0的状态,模式= 300,FUNC = 0
Inactive: port 2 pin 3 state=1, mode=0, func=1
Inactive: port 2 pin 4 state=0, mode=300, func=0

TR_Dialog
离线
最后看到:2个月2周前
工作人员
加入:2014-06-30 23:52
你好理查德:

你好理查德:

让我来总结一下这个问题:“你是不是能够切换P2_0,P2_1,P2_2,P2_4。”这样对吗?

P2_0和P2_1用于XTAL32连接。如果你想使用它们作为GPIO,你将不得不选择和使用内部RCX睡眠时钟源。你做过这个吗?

P2_4用于SWCLK。你能否确认您没有使用JTAG?

P2_2也用于devkit上的USB。你能确认你没有调用USB相关的软件吗?

以上问题的答案将有助于确保测试条件是正确的。

谢谢,

TR_DIALOG

理查德Legault
离线
最后看到:3年11个月前
加入:2017年3月1日18:54
是的,我们有身体

是的,我们从物理上拿走了水晶
已经建立
#定义dg_configUSE_LP_CLK LP_CLK_RCX

我们已经设置
的#define dg_configUSE_USB(0)

我们离开P2_4为SWCLK和P0-6作为SWDIO但感谢指出了这一点。

理查德Legault
离线
最后看到:3年11个月前
加入:2017年3月1日18:54
我现在可以控制P2_2

我现在可以通过使用USBPAD_EN控制P2_2
空隙测试(空白)

REG_SET_BIT (CRG_PER USBPAD_REG USBPAD_EN);//使用这个命令允许我使用P2_2作为GPIO结合设置引脚功能。
hw_gpio_set_pin_function(0,0, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO);
hw_gpio_set_pin_function(2, 1, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO);
hw_gpio_set_pin_function(2, 2, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO);
// hw_gpio_set_pin_function(2,3,HW_GPIO_MODE_OUTPUT,HW_GPIO_FUNC_GPIO);// UART RX
// hw_gpio_set_pin_function(2,4,HW_GPIO_MODE_INPUT,HW_GPIO_FUNC_GPIO);// SWDIO
...

现在,当我设置或清除P2_2时,它表现为gpio引脚。

我仍然无法切换P2_0或P2_1,我正在查看是否有一个模拟设置需要清除,与GPIO FUNC和MODE设置分开。

是否有一种“适当的”方法来调用USBPAD_EN,或者这是最好的方法,我假设这应该在peripher_init中完成。
我将在解决P2_0和P2_1后进行测试。

理查德Legault
离线
最后看到:3年11个月前
加入:2017年3月1日18:54
解决了P2_0,1问题。

解决了P2_0,1问题。
标记为2-0和2-1的主板引脚在物理上与子板断开。
如果我在探测与子板上的水晶片,我得到预期的行为。
最接近Y2标记的pad是P2-0。

为了连接子板和主板之间的P2_0和P2_1,必须在子板上的R5和R6处放置两个0欧姆电阻。

对于USB:
我还移除了J6的跳线。从一开始。

所以我在这一点上唯一突出的问题是什么是设置USBPAD_EN的正确方法

TR_Dialog
离线
最后看到:2个月2周前
工作人员
加入:2014-06-30 23:52
你好理查德:

你好理查德:

表1(引脚描述)在数据表有以下评论:

注意:采用该引脚在GPIO模式必须设置USBPAD_REG[USBPAD_EN]。必须仅在V33供应中使用。

在第151页

特殊的I/O考虑

有在使用的GPIO某些因素

说明如下:

•在GPIO模式下使用P1_1或P2_2,

必须设置USBPAD_REG[USBPAD_EN]。然而,

在这个引脚上的允许的水平是0V,并且

V33轨道上的电压。当1.8 V被选为

引脚供电时,负载电流增加150一个,

因为这些引脚没有反驱动保护。

此外,这些别针不应该在睡眠中使用

模式,因为USBPAD_REG将被启动

灭(属于外接电源域)。

您已设置USBPAD_EN应该罚款的方式。你有什么顾虑?

我也在内部仔细检查。

谢谢,

TR_DIALOG