主题中讨论的其他器件:CC3235SF
您好!
CC3235SF 的技术参考手册的表16-11显示了引脚配置寄存器列表、表16-12介绍了每个寄存器值的数据格式。 但是,当将开发套件板重置为默认演示应用程序,然后刷写打印表16-11中每个寄存器内容的自定义应用程序时,我注意到,有几个引脚确实具有用于引脚复用编码*或驱动强度**的未记录配置值 (请参阅下面的代码)。 是否有人能解释他们的功能?
*与数据表的表7-2中列出的值进行比较。
**与参考手册清单的表16-12相比
此外、引脚29和30还有配置寄存器、根据数据表的表7-2将这些寄存器设置为接地、因此配置没有太大意义、对吧?
// pin03 function: 01 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 1 out-buffer: 1 < undocumented function! // pin07 function: 01 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 1 out-buffer: 1 < undocumented function! // pin08 function: 01 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 1 out-buffer: 1 < undocumented function! // pin11 function: 01 open-drain: 0 driver: 128mA pull-up: 0 pull-down: 1 out-override: 0 out-buffer: 0 < undocumented driver strength 0b100 // pin12 function: 01 open-drain: 0 driver: 128mA pull-up: 0 pull-down: 1 out-override: 0 out-buffer: 0 < undocumented driver strength 0b100 // pin14 function: 01 open-drain: 0 driver: 128mA pull-up: 0 pull-down: 0 out-override: 0 out-buffer: 0 < undocumented driver strength 0b100 // pin18 function: 01 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 1 out-buffer: 1 < undocumented function! // pin19 function: 02 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 0 out-buffer: 0 < undocumented function! // pin20 function: 02 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 0 out-buffer: 0 < undocumented function! // pin21 function: 01 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 0 out-buffer: 1 < undocumented function! // pin29 function: 01 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 1 out-buffer: 1 < GND?!? // pin30 function: 01 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 1 out-buffer: 1 < GND?!? // pin45 function: 01 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 1 out-buffer: 1 < undocumented function! // pin50 function: 01 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 1 out-buffer: 1 < undocumented function! // pin52 function: 01 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 1 out-buffer: 1 < undocumented function! // pin53 function: 01 open-drain: 0 driver: 6mA pull-up: 0 pull-down: 0 out-override: 1 out-buffer: 1 < undocumented function!
/// Addresses of pad configuration registers for application pins.
enum class pad_config_register : uint32_t {
pin_1 = 0x4402e0c8,
pin_2 = 0x4402e0cc,
pin_3 = 0x4402e0d0,
pin_4 = 0x4402e0d4,
pin_5 = 0x4402e0d8,
pin_6 = 0x4402e0dc,
pin_7 = 0x4402e0e0,
pin_8 = 0x4402e0e4,
pin_11 = 0x4402e0e8,
pin_12 = 0x4402e0ec,
pin_13 = 0x4402e0f0,
pin_14 = 0x4402e0f4,
pin_15 = 0x4402e0f8,
pin_16 = 0x4402e0fc,
pin_17 = 0x4402e100,
pin_18 = 0x4402e140,
pin_19 = 0x4402e110,
pin_20 = 0x4402e114,
pin_21 = 0x4402e104,
pin_29 = 0x4402e108,
pin_30 = 0x4402e10c,
pin_45 = 0x4402e11c,
pin_50 = 0x4402e0a0,
pin_52 = 0x4402e120,
pin_53 = 0x4402e118,
pin_55 = 0x4402e0a4,
pin_57 = 0x4402e0a8,
pin_58 = 0x4402e0ac,
pin_59 = 0x4402e0b0,
pin_60 = 0x4402e0b4,
pin_61 = 0x4402e0b8,
pin_62 = 0x4402e0bc,
pin_63 = 0x4402e0c0,
pin_64 = 0x4402e0c4,
};
...
void print_pin(uint32_t number, pad_config_register pad)
{
auto config = pinmux_get(pad);
uint32_t driver;
switch (config & (7 << 5)) {
case pinmux_output_driver_6mA:
driver = 6;
break;
case pinmux_output_driver_4mA:
driver = 4;
break;
case pinmux_output_driver_2mA:
driver = 2;
break;
case pinmux_output_driver_disabled:
driver = 0;
break;
default:
driver = config & (7 << 5);
break;
}
printk("pin%02u function: %02u open-drain: %u driver: %umA pull-up: %u "
"pull-down: %u out-override: %u out-buffer: %u\n",
number, config & 0x0F, (config >> 4) & 1, driver, (config >> 8) & 1,
(config >> 9) & 1, (config >> 10) & 1, (config >> 11) & 1);
}
...
print_pin(1, pad_config_register::pin_1);
print_pin(2, pad_config_register::pin_2);
print_pin(3, pad_config_register::pin_3);
print_pin(4, pad_config_register::pin_4);
print_pin(5, pad_config_register::pin_5);
print_pin(6, pad_config_register::pin_6);
print_pin(7, pad_config_register::pin_7);
print_pin(8, pad_config_register::pin_8);
print_pin(11, pad_config_register::pin_11);
print_pin(12, pad_config_register::pin_12);
print_pin(13, pad_config_register::pin_13);
print_pin(14, pad_config_register::pin_14);
print_pin(15, pad_config_register::pin_15);
print_pin(16, pad_config_register::pin_16);
print_pin(17, pad_config_register::pin_17);
print_pin(18, pad_config_register::pin_18);
print_pin(19, pad_config_register::pin_19);
print_pin(20, pad_config_register::pin_20);
print_pin(21, pad_config_register::pin_21);
print_pin(29, pad_config_register::pin_29);
print_pin(30, pad_config_register::pin_30);
print_pin(45, pad_config_register::pin_45);
print_pin(50, pad_config_register::pin_50);
print_pin(52, pad_config_register::pin_52);
print_pin(53, pad_config_register::pin_53);
print_pin(55, pad_config_register::pin_55);
print_pin(57, pad_config_register::pin_57);
print_pin(58, pad_config_register::pin_58);
print_pin(59, pad_config_register::pin_59);
print_pin(60, pad_config_register::pin_60);
print_pin(61, pad_config_register::pin_61);
print_pin(62, pad_config_register::pin_62);
print_pin(63, pad_config_register::pin_63);
print_pin(64, pad_config_register::pin_64);