회사일/USB PD2024. 12. 5. 14:08

개발보드 꺼내서 연결해보니 U-boot 레벨에서 20V 받아가는 것 확인.. -_-!

USB 규격 볼 바에는 이걸 보는게 빠를 듯..

[링크 : https://github.com/nxp-imx/uboot-imx/]

[링크 : https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8MP-USB-PD-realized/ta-p/1531209]

 

아무생각없이 보고 있던 소스.. -_- mp를 봐야했나..?

[링크 : https://github.com/nxp-imx/uboot-imx/blob/lf_v2022.04/board/freescale/imx8mm_evk/imx8mm_evk.c]

 

소스를 보면 변경점이 꽤 많긴 하지만 큰 틀에서 ptn5110 쓰는건 동일해서 mm 으로 보는게 편할지도?

[링크 : https://github.com/nxp-imx/uboot-imx/blob/lf_v2022.04/board/freescale/imx8mp_evk/imx8mp_evk.c]

 

+

evk uboot 로그

U-Boot SPL 2023.04-lf_v2023.04+g49b102d988 (Nov 21 2023 - 07:28:53 +0000)
DDRINFO: start DRAM init
DDRINFO: DRAM rate 4000MTS
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
SEC0:  RNG instantiated
Normal Boot
Trying to boot from BOOTROM
Boot Stage: Primary boot
image offset 0x8000, pagesize 0x200, ivt offset 0x0
NOTICE:  Do not release JR0 to NS as it can be used by HAB
NOTICE:  BL31: v2.8(release):android-14.0.0_1.0.0-rc1-1-g08e9d4eef
NOTICE:  BL31: Built : 06:43:30, Nov 21 2023

                                                                                
U-Boot 2023.04-lf_v2023.04+g49b102d988 (Nov 21 2023 - 07:28:53 +0000)           
                                                                                
CPU:   i.MX8MP[8] rev1.1 1800 MHz (running at 1200 MHz)                         
CPU:   Commercial temperature grade (0C to 95C) at 25C                          
Reset cause: POR                                                                
Model: NXP i.MX8MPlus LPDDR4 EVK board                                          
DRAM:  6 GiB                                                                    
TCPC:  Vendor ID [0x1fc9], Product ID [0x5110], Addr [I2C2 0x50]                
SNK.Power3.0 on CC1                                                             
PDO 0: type 0, 5000 mV, 3000 mA [E]                                             
PDO 1: type 0, 9000 mV, 3000 mA []                                              
PDO 2: type 0, 12000 mV, 3000 mA []                                             
PDO 3: type 0, 15000 mV, 3000 mA []                                             
PDO 4: type 0, 20000 mV, 3000 mA []                                             
PDO 5: type 3, undefined                                                        
Requesting PDO 4: 20000 mV, 2250 mA                                             
Source accept request                                                           
PD source ready!                                                                
tcpc_pd_receive_message: Polling ALERT register, TCPC_ALERT_RX_STATUS bit faile2
Power supply on USB2                                                            
TCPC:  Vendor ID [0x1fc9], Product ID [0x5110], Addr [I2C1 0x50]                
Core:  257 devices, 36 uclasses, devicetree: separate                           
MMC:   FSL_SDHC: 1, FSL_SDHC: 2                                                 
Loading Environment from MMC... *** Warning - bad CRC, using default environment
                                                                                
[*]-Video Link 0adv7535_mipi2hdmi adv7535@3d: Can't find cec device id=0x3c     
fail to probe panel device adv7535@3d                                           
fail to get display timings                                                     
probe video device failed, ret -19                                              
                                                                                
        [0] lcd-controller@32e80000, video                                      
        [1] mipi_dsi@32e60000, video_bridge                                     
        [2] adv7535@3d, panel                                                   
adv7535_mipi2hdmi adv7535@3d: Can't find cec device id=0x3c                     
fail to probe panel device adv7535@3d                                           
fail to get display timings                                                     
probe video device failed, ret -19                                              
In:    serial                                                                   
Out:   serial                                                                   
Err:   serial                                                                   
SEC0:  RNG instantiated                                                         
switch to partitions #0, OK                                                     
mmc1 is current device                                                          
flash target is MMC:1                                                           
Net:   eth0: ethernet@30be0000, eth1: ethernet@30bf0000 [PRIME]                 
Fastboot: Normal                                                                
Normal Boot                                                                     
Hit any key to stop autoboot:  0                                                
Working FDT set to 43000000                                                     
libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND                              
libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND                              
libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND                              
libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND                              
starting USB...                                                                 
Bus usb@38100000: Failed to initialize board for imx8m USB                      
probe failed, error -62                                                         
Bus usb@38200000: Register 2000140 NbrPorts 2                                   
Starting the controller                                                         
USB XHCI 1.10                                                                   
scanning bus usb@38200000 for devices... 1 USB Device(s) found                  
       scanning usb for storage devices... 0 Storage Device(s) found            
                                                                                
Device 0: unknown device                                                        
switch to partitions #0, OK                                                     
mmc1 is current device                                                          
Scanning mmc 1:1...                                                             
86911 bytes read in 14 ms (5.9 MiB/s)                                           
Working FDT set to 43000000                                                     
Unable to open OP-TEE session (err=-5)                                          
mm_communicate failed!                                                          
Error: Cannot initialize UEFI sub-system, r = 3                                 
switch to partitions #0, OK                                                     
mmc2(part 0) is current device                                                  
Scanning mmc 2:1...                                                             
64669 bytes read in 1 ms (61.7 MiB/s)                                           
Working FDT set to 43000000                                                     
Error: Cannot initialize UEFI sub-system, r = 3                                 
Running BSP bootcmd ...                                                         
switch to partitions #0, OK                                                     
mmc1 is current device                                                          
Failed to load 'boot.scr'                                                       
32856576 bytes read in 372 ms (84.2 MiB/s)                                      
Booting from mmc ...                                                            
86911 bytes read in 4 ms (20.7 MiB/s)                                           
## Flattened Device Tree blob at 43000000                                       
   Booting using the fdt blob at 0x43000000                                     
Working FDT set to 43000000                                                     
clk usb_phy_root_clk already disabled                                           
   Using Device Tree in place at 0000000043000000, end 000000004301837e         
Working FDT set to 43000000                                                     
adv7535_mipi2hdmi adv7535@3d: Can't find cec device id=0x3c                     
fail to probe panel device adv7535@3d                                           
fail to get display timings                                                     
probe video device failed, ret -19                                              
                                                                                
Starting kernel ...

 

'회사일 > USB PD' 카테고리의 다른 글

linux kernel USB PD 관련 검색  (0) 2024.12.04
USB PD 용어 정리중  (0) 2024.12.03
USB PD SOP*?  (0) 2024.12.03
USB-C PTN5110 케이블 방향에 따른 데이터 차이  (0) 2024.11.27
USB PD - DRP?  (0) 2024.11.25
Posted by 구차니
프로그램 사용/busybox2024. 12. 4. 16:59

busybox에 포함된 minicom 보다 더 간략화된 통신 터미널인데

설명이 부실해서 종료하는 법을 알기 힘들다 -_-

 

ctrl-x

[링크 : https://www.armadeus.org/wiki/index.php?title=Microcom]

'프로그램 사용 > busybox' 카테고리의 다른 글

sh: line 1: kill: root: no such pid  (0) 2015.01.05
busybox su가 안될 경우  (0) 2014.12.05
busybox tftp  (0) 2013.06.18
busybox - setconsole  (0) 2011.10.21
busybox ash "cannot open /dev/ttyAS1: no such device"  (0) 2010.04.20
Posted by 구차니
Linux API/linux2024. 12. 4. 14:18

고통 받고 있는 ptn5110에 대해서 검색하는데

리눅스 소스상에 dtb로만 존재해서 문법을 찾아보는 중.

봐야할 부분은 source-pdos의 <PDO_FIXED()>; 인데

	ptn5110: tcpc@50 {
		compatible = "nxp,ptn5110", "tcpci";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_typec>;
		reg = <0x50>;
		interrupt-parent = <&lsio_gpio1>;
		interrupts = <3 IRQ_TYPE_LEVEL_LOW>;

		usb_con1: connector {
			compatible = "usb-c-connector";
			label = "USB-C";
			power-role = "source";
			data-role = "dual";
			source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;

			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				port@0 {
					reg = <0>;

					typec_dr_sw: endpoint {
						remote-endpoint = <&usb3_drd_sw>;
					};
				};

				port@1 {
					reg = <1>;

					typec_con_ss: endpoint {
						remote-endpoint = <&usb3_data_ss>;
					};
				};
			};
		};
	};

 

<> 는 cell 이라고 부르고

[링크 : https://kernel.bz/boardPost/118684/3]

 

unsigned int로 된 배열인것 같은데

  • 텍스트 문자열 (널로 종료 됨)은 큰 따옴표로 표시됩니다.
    • string-property = "a string";
  • ‘셀’은 꺾쇠 괄호로 구분 된 32 비트 부호없는 정수입니다.
    • cell-property = <0xbeef 123 0xabcd1234>;
  • 이진 데이터는 대괄호로 구분됩니다.
    • binary-property = [0x01 0x23 0x45 0x67];
  • 다른 표현의 데이터는 쉼표를 사용하여 함께 연결할 수 있습니다.
    • mixed-property = "a string", [0x01 0x23 0x45 0x67], <0x12345678>;
  • 쉼표는 문자열 목록을 만드는 데에도 사용됩니다.
    • string-list = "red fish", "blue fish";

[링크 : https://jung-max.github.io/2019/10/22/Device_Tree_문법/]

 

도대체 저 매크로는 어떻게 dtb에서 인식을 하고 쓰는거지? 하고 찾아보니

아래의 경로에서 dt-bindings 라는 곳에서 정의가 되어있었다.

linux-master/scripts/dtc/include-prefixes/dt-bindings/usb

 

선언을 하도 여러군데서 하다보니 일반소스에서만 선언된 줄 알았는데..

#define PDO_FIXED(mv, ma, flags) \
    (PDO_TYPE(PDO_TYPE_FIXED) | (flags) | \
    PDO_FIXED_VOLT(mv) | PDO_FIXED_CURR(ma))

 

device tress binding 이라는 녀석이 또 추가 되었나 보다..

[링크 : https://docs.zephyrproject.org/latest/build/dts/bindings.html]

'Linux API > linux' 카테고리의 다른 글

usb hid, hidraw  (0) 2024.03.11
linux 멀티터치 프로토콜  (0) 2024.03.08
btrfs CoW  (0) 2024.02.15
statvfs() 의 f_bavail과 f_bfree 차이  (0) 2024.02.15
corrupted size vs. prev_size 에러.. part2  (0) 2023.12.15
Posted by 구차니
회사일/USB PD2024. 12. 4. 11:50

PDO 쪽으로 검색해서 발견했는데

[링크 : https://chromium.googlesource.com/chromiumos/platform/ec/+/firmware-twinkie-9628.B/include/usb_pd.h]

 

드라이버는 이쪽 인 것 같고

[링크 : https://github.com/torvalds/linux/tree/master/drivers/usb/typec]

 

헤더는 이쪽인 것 같다.

/* PDO: Power Data Object */
#define PDO_MAX_OBJECTS 7

enum pd_pdo_type {
PDO_TYPE_FIXED = 0,
PDO_TYPE_BATT = 1,
PDO_TYPE_VAR = 2,
PDO_TYPE_APDO = 3,
};

#define PDO_TYPE_SHIFT 30
#define PDO_TYPE_MASK 0x3

#define PDO_TYPE(t) ((t) << PDO_TYPE_SHIFT)

#define PDO_VOLT_MASK 0x3ff
#define PDO_CURR_MASK 0x3ff
#define PDO_PWR_MASK 0x3ff

#define PDO_FIXED_DUAL_ROLE BIT(29) /* Power role swap supported */
#define PDO_FIXED_SUSPEND BIT(28) /* USB Suspend supported (Source) */
#define PDO_FIXED_HIGHER_CAP BIT(28) /* Requires more than vSafe5V (Sink) */
#define PDO_FIXED_EXTPOWER BIT(27) /* Externally powered */
#define PDO_FIXED_USB_COMM BIT(26) /* USB communications capable */
#define PDO_FIXED_DATA_SWAP BIT(25) /* Data role swap supported */
#define PDO_FIXED_UNCHUNK_EXT BIT(24) /* Unchunked Extended Message supported (Source) */
#define PDO_FIXED_FRS_CURR_MASK (BIT(24) | BIT(23)) /* FR_Swap Current (Sink) */
#define PDO_FIXED_FRS_CURR_SHIFT 23
#define PDO_FIXED_PEAK_CURR_SHIFT 20
#define PDO_FIXED_VOLT_SHIFT 10 /* 50mV units */
#define PDO_FIXED_CURR_SHIFT 0 /* 10mA units */

#define PDO_FIXED_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_FIXED_VOLT_SHIFT)
#define PDO_FIXED_CURR(ma) ((((ma) / 10) & PDO_CURR_MASK) << PDO_FIXED_CURR_SHIFT)

#define PDO_FIXED(mv, ma, flags) \
(PDO_TYPE(PDO_TYPE_FIXED) | (flags) | \
 PDO_FIXED_VOLT(mv) | PDO_FIXED_CURR(ma))

#define VSAFE5V 5000 /* mv units */

#define PDO_BATT_MAX_VOLT_SHIFT 20 /* 50mV units */
#define PDO_BATT_MIN_VOLT_SHIFT 10 /* 50mV units */
#define PDO_BATT_MAX_PWR_SHIFT 0 /* 250mW units */

#define PDO_BATT_MIN_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_BATT_MIN_VOLT_SHIFT)
#define PDO_BATT_MAX_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_BATT_MAX_VOLT_SHIFT)
#define PDO_BATT_MAX_POWER(mw) ((((mw) / 250) & PDO_PWR_MASK) << PDO_BATT_MAX_PWR_SHIFT)

#define PDO_BATT(min_mv, max_mv, max_mw) \
(PDO_TYPE(PDO_TYPE_BATT) | PDO_BATT_MIN_VOLT(min_mv) | \
 PDO_BATT_MAX_VOLT(max_mv) | PDO_BATT_MAX_POWER(max_mw))

#define PDO_VAR_MAX_VOLT_SHIFT 20 /* 50mV units */
#define PDO_VAR_MIN_VOLT_SHIFT 10 /* 50mV units */
#define PDO_VAR_MAX_CURR_SHIFT 0 /* 10mA units */

#define PDO_VAR_MIN_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_VAR_MIN_VOLT_SHIFT)
#define PDO_VAR_MAX_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_VAR_MAX_VOLT_SHIFT)
#define PDO_VAR_MAX_CURR(ma) ((((ma) / 10) & PDO_CURR_MASK) << PDO_VAR_MAX_CURR_SHIFT)

#define PDO_VAR(min_mv, max_mv, max_ma) \
(PDO_TYPE(PDO_TYPE_VAR) | PDO_VAR_MIN_VOLT(min_mv) | \
 PDO_VAR_MAX_VOLT(max_mv) | PDO_VAR_MAX_CURR(max_ma))

enum pd_apdo_type {
APDO_TYPE_PPS = 0,
};

#define PDO_APDO_TYPE_SHIFT 28 /* Only valid value currently is 0x0 - PPS */
#define PDO_APDO_TYPE_MASK 0x3

#define PDO_APDO_TYPE(t) ((t) << PDO_APDO_TYPE_SHIFT)

#define PDO_PPS_APDO_MAX_VOLT_SHIFT 17 /* 100mV units */
#define PDO_PPS_APDO_MIN_VOLT_SHIFT 8 /* 100mV units */
#define PDO_PPS_APDO_MAX_CURR_SHIFT 0 /* 50mA units */

#define PDO_PPS_APDO_VOLT_MASK 0xff
#define PDO_PPS_APDO_CURR_MASK 0x7f

#define PDO_PPS_APDO_MIN_VOLT(mv) \
((((mv) / 100) & PDO_PPS_APDO_VOLT_MASK) << PDO_PPS_APDO_MIN_VOLT_SHIFT)
#define PDO_PPS_APDO_MAX_VOLT(mv) \
((((mv) / 100) & PDO_PPS_APDO_VOLT_MASK) << PDO_PPS_APDO_MAX_VOLT_SHIFT)
#define PDO_PPS_APDO_MAX_CURR(ma) \
((((ma) / 50) & PDO_PPS_APDO_CURR_MASK) << PDO_PPS_APDO_MAX_CURR_SHIFT)

#define PDO_PPS_APDO(min_mv, max_mv, max_ma) \
(PDO_TYPE(PDO_TYPE_APDO) | PDO_APDO_TYPE(APDO_TYPE_PPS) | \
PDO_PPS_APDO_MIN_VOLT(min_mv) | PDO_PPS_APDO_MAX_VOLT(max_mv) | \
PDO_PPS_APDO_MAX_CURR(max_ma))


/* RDO: Request Data Object */
#define RDO_OBJ_POS_SHIFT 28
#define RDO_OBJ_POS_MASK 0x7
#define RDO_GIVE_BACK BIT(27) /* Supports reduced operating current */
#define RDO_CAP_MISMATCH BIT(26) /* Not satisfied by source caps */
#define RDO_USB_COMM BIT(25) /* USB communications capable */
#define RDO_NO_SUSPEND BIT(24) /* USB Suspend not supported */

#define RDO_PWR_MASK 0x3ff
#define RDO_CURR_MASK 0x3ff

#define RDO_FIXED_OP_CURR_SHIFT 10
#define RDO_FIXED_MAX_CURR_SHIFT 0

#define RDO_OBJ(idx) (((idx) & RDO_OBJ_POS_MASK) << RDO_OBJ_POS_SHIFT)

#define PDO_FIXED_OP_CURR(ma) ((((ma) / 10) & RDO_CURR_MASK) << RDO_FIXED_OP_CURR_SHIFT)
#define PDO_FIXED_MAX_CURR(ma) ((((ma) / 10) & RDO_CURR_MASK) << RDO_FIXED_MAX_CURR_SHIFT)

#define RDO_FIXED(idx, op_ma, max_ma, flags) \
(RDO_OBJ(idx) | (flags) | \
 PDO_FIXED_OP_CURR(op_ma) | PDO_FIXED_MAX_CURR(max_ma))

#define RDO_BATT_OP_PWR_SHIFT 10 /* 250mW units */
#define RDO_BATT_MAX_PWR_SHIFT 0 /* 250mW units */

#define RDO_BATT_OP_PWR(mw) ((((mw) / 250) & RDO_PWR_MASK) << RDO_BATT_OP_PWR_SHIFT)
#define RDO_BATT_MAX_PWR(mw) ((((mw) / 250) & RDO_PWR_MASK) << RDO_BATT_MAX_PWR_SHIFT)

#define RDO_BATT(idx, op_mw, max_mw, flags) \
(RDO_OBJ(idx) | (flags) | \
 RDO_BATT_OP_PWR(op_mw) | RDO_BATT_MAX_PWR(max_mw))

#define RDO_PROG_VOLT_MASK 0x7ff
#define RDO_PROG_CURR_MASK 0x7f

#define RDO_PROG_VOLT_SHIFT 9
#define RDO_PROG_CURR_SHIFT 0

#define RDO_PROG_VOLT_MV_STEP 20
#define RDO_PROG_CURR_MA_STEP 50

#define PDO_PROG_OUT_VOLT(mv) \
((((mv) / RDO_PROG_VOLT_MV_STEP) & RDO_PROG_VOLT_MASK) << RDO_PROG_VOLT_SHIFT)
#define PDO_PROG_OP_CURR(ma) \
((((ma) / RDO_PROG_CURR_MA_STEP) & RDO_PROG_CURR_MASK) << RDO_PROG_CURR_SHIFT)

#define RDO_PROG(idx, out_mv, op_ma, flags) \
(RDO_OBJ(idx) | (flags) | \
 PDO_PROG_OUT_VOLT(out_mv) | PDO_PROG_OP_CURR(op_ma))

[링크 : https://github.com/torvalds/linux/blob/master/include/linux/usb/pd.h]

'회사일 > USB PD' 카테고리의 다른 글

i.mx8 evk uboot usb pd 메시지  (0) 2024.12.05
USB PD 용어 정리중  (0) 2024.12.03
USB PD SOP*?  (0) 2024.12.03
USB-C PTN5110 케이블 방향에 따른 데이터 차이  (0) 2024.11.27
USB PD - DRP?  (0) 2024.11.25
Posted by 구차니

계엄령 경고했던 김민석 “尹, 오더만 내리면 계엄 완성이라 생각했을 것”

[링크 : https://v.daum.net/v/20241204085934850]

'개소리 왈왈 > 정치관련 신세한탄' 카테고리의 다른 글

대통령 출국금지...?!  (1) 2024.12.09
집단의 사이코패스...?  (0) 2024.12.08
비상 계엄 선포?  (0) 2024.12.03
니들이 무급으로 가덩가  (2) 2024.09.25
태극기 뒤집기에 기미가요라..  (2) 2024.08.15
Posted by 구차니
Posted by 구차니
회사일/USB PD2024. 12. 3. 14:34

PDP Rating(Power Delivery Power Rating)
[링크 : https://usb.org/sites/default/files/D2T2-1%20-%20USB%20Power%20Delivery.pdf]


PDO(Power Data Object)
APDO(Augmented Power Data Object) = PPS(Programmable Power supply)
[링크 : https://smartchoice.kr/usb-고속충전의-종류와-usb-pd-충전에-대해-자세히-알아보자/]

 

AMS (Atomic message sequence)

[링크 : https://www.st.com/resource/en/user_manual/um2552-managing-usb-power-delivery-systems-with-stm32-microcontrollers-stmicroelectronics.pdf]

 

PDO는 또 머냐...

[링크 : https://velog.io/@zhemdrawer/USB-PD-이해]

 

PDOs - Power-Data Objects

RDO - Request-Data Object

[링크 : https://www.ti.com/lit/an/slva842/slva842.pdf]

 

+

2024.12.08

PPS(Programmable Power Supply) 

[링크 : https://www.belkin.com/kr/support-article/?articleNum=318878]

 

USB PD 1.0 - profile

USB PD 2.0 - PDO

USB PD 3.0 - APDO / PPS

[링크 : https://namu.wiki/w/USB%20PD]

 

 

+

2024.12.13

[링크 : https://velog.io/@zhemdrawer/USB-PD-이해]

'회사일 > USB PD' 카테고리의 다른 글

i.mx8 evk uboot usb pd 메시지  (0) 2024.12.05
linux kernel USB PD 관련 검색  (0) 2024.12.04
USB PD SOP*?  (0) 2024.12.03
USB-C PTN5110 케이블 방향에 따른 데이터 차이  (0) 2024.11.27
USB PD - DRP?  (0) 2024.11.25
Posted by 구차니
회사일/USB PD2024. 12. 3. 12:45

걍 패킷을 보낸다 라는걸 죄다 SOP라고 퉁치는것 같은데

SOP

SOP'

SOP''

SOP* 이런게 나와서 헷갈리는 중..

 

SOP*
• Start of packet (SOP/SOP’/SOP’’)

[링크 : https://usb.org/sites/default/files/D2T2-1%20-%20USB%20Power%20Delivery.pdf]

 

SOP* - The Start of Frame field in a USB Power Delivery packet indicates the intended recipient of the packet.

[링크 : https://ww1.microchip.com/downloads/en/AppNotes/00001974A.pdf]

 

50h 에 TRANSMIT 이라는 레지스터가 있는데 Read / Write 이고 [2:0] 3비트는 아래의 값을 지닌댄다.

도대체 cable reset은 왜 저기서 튀어나오는걸까?

[링크 : https://www.nxp.com/docs/en/data-sheet/PTN5110.pdf]

 

각 패킷별 전송이나 응답할 녀석이 달라지는건가?

[링크 : https://www.graniteriverlabs.com/en-us/technical-blog/usb-pd-power-delivery-spec-versions]

 

 

5
Sending a USB PD message
The general steps of transmitting a SOP* message are listed below. Please consult
sections 4.7.1, 4.7.2, and 4.7.3 of the TCPC specification[3] for more detailed
implementation and examples.
• Step 0: TCPM writes the content of the message to be transmitted into the
TRANSMIT_BUFFER
• Step 1: TCPM writes to TRANSMIT requesting SOP* transmission
• Step 2: The outcome reported by the TCPC may be one of three indications after
asserting the Alert# pin:
– If the TCPC PHY layer successfully transmits the message, the TCPC sets the
Transmission Successful bit in the ALERT register.
– If the TCPC PHY layer did not get any response after retries, the TCPC sets the
Transmission Failed bit in the ALERT register.
– If the transmission was discarded due to an incoming message, the TCPC sets the
Transmission Discarded bit in the ALERT register.
• Step 3: Before requesting another transmission, the TCPM shall clear the alert by
writing a 1 to the asserted bit in the ALERT register.
When transitioning through the steps of transmitting SOP* message, TCPC may assert
ALERT.ReceiveStatus or ALERT.ReceivedHardReset bit at any time to notify that a
message was received.

[링크 : https://www.nxp.com/docs/en/application-note/AN12137.pdf]

 

위에서 4.7.1~4.7.3을 보라는데 제목만 봐서는.. 흐음..

4.7 USB PD Communication Operational Model
4.7.1 Transmitting an SOP* USB PD Message with Less than or Equal to 128 Data Bytes
4.7.2 Transmitting an SOP* USB PD Message with Greater than 128 Data Bytes
4.7.3 Transmitting a Hard Reset Message

[링크 : https://www.usb.org/sites/default/files/documents/usb-port_controller_specification_rev2.0_v1.0_0.pdf]

 

RDO (Request Data Object)

[링크 : https://www.ti.com/lit/an/slva842/slva842.pdf]

 

 

 

'회사일 > USB PD' 카테고리의 다른 글

linux kernel USB PD 관련 검색  (0) 2024.12.04
USB PD 용어 정리중  (0) 2024.12.03
USB-C PTN5110 케이블 방향에 따른 데이터 차이  (0) 2024.11.27
USB PD - DRP?  (0) 2024.11.25
TCPC, TCPM  (0) 2024.11.22
Posted by 구차니
회사일/BQ25703A2024. 12. 2. 18:00

RESET_REG랑 RESET_VINDPM을 둘다 set 하고 하니 VINDPM의 값이 변경되지 않는 현상이 발생함.

그냥 RESET_VINDPM 만 설정해주면 된다.

해당 값은 0x0B/0x0A 의 InputVoltage Register 값에 있는데

 

VBUS-1.28V 로 초기화 되는 값이라는데

반대로 보면.. 1.28V를 더해줘야 하냐.. 그게 아니라면 DC offset이 3.2V 니까(0x00) 일때 3.2V를 더해주는게 맞냐 좀 헷갈린다.

'회사일 > BQ25703A' 카테고리의 다른 글

bq25703A NVDC  (0) 2024.11.29
배터리 충전  (0) 2024.11.28
bq25703A i2c 읽기, 쓰기  (0) 2024.11.22
bq25703a 충전  (0) 2024.11.07
Posted by 구차니

node.js 이동경로  3d로 그리기 등

[링크 : https://github.com/austinbaccus/forza-telemetry/]

 

c#, 텍스트

[링크 : https://github.com/geeooff/forza-data-web]

 

M5Stack-CoreS3 기반

Horizon은 324 byte?

 if (packet.length() > 310 && packet.length() < 332) // packet length now 331 for motorsport?
                         {                                                   // Check we have a correctly-sized Forza packet. Note Horizon packets are 324 bytes, Motorsport packets are 311 bytes
                             if (packet.length() == 324)
                             {
                                //  USBSerial.println("Got Horizon packet");
                             }
                            else
                             { // Motorsport packet
                             }
                         }

[링크 : https://github.com/richstokes/Forza-TCS/tree/master]

 

python

[링크 : https://github.com/nettrom/forza_motorsport]

 

golang, 웹기반

[링크 : https://github.com/richstokes/Forza-data-tools]

Posted by 구차니