I am using TMDXEVM6657 eval Board on which all uPP-Pins are accesible on the 80-Pin Header.
Converting ChannelA via uPP works very fine only on Channel B i always get "Zeros".
My configruation is:
void upp_pinmux_enable(void){ //Uint32 CHIP_MISC_CTRL = CSL_BOOT_CFG_REGS + CHIP_MISC; //* (volatile unsigned int *) CHIP_MISC_CTRL = 0x00000000; //Use ASYNC3 as clk source to rpi_chip_clk // Uint32 Chip_Pin_control_1 = hBootCfg->CHIP_PIN_CONTROL_1; Uint32 Chip_Pin_control_1 = 0x02620584; * (volatile unsigned int *) Chip_Pin_control_1 = 0x00000001; }
uPPInit():
upp_key_config(); // program the KICK0 and 1 registers. upp_pinmux_enable(); // Though internal loopback, enable uPP in PIN_CONTROL_1 // read PID int pid = CSL_FEXT(uppRegs->UPPID, UPP_UPPID_REVID); if(pid != CSL_UPP_UPPID_RESETVAL) { printf("\n Error : Incorrect UPP ID read."); goto upp_test_exit; } // toggle SW reset in PCR CSL_FINST(uppRegs->UPPCR, UPP_UPPCR_SWRST, RESET); for (i = 0; i < 200; i++) asm(" nop"); CSL_FINST(uppRegs->UPPCR, UPP_UPPCR_SWRST, RUNNING); // init regs: CTL, ICR, IVR, TCR uPP = uppDevParams_DEFAULT; uPP.A.direction = UPP_DIR_RCV; uPP.A.dataRate = UPP_DR_SDR; uPP.A.dataWidthVal = dataWidth; uPP.A.idleValueVal = 0xAAAA; uPP.A.clkDivVal = 0x1; // use clock div between 0 and 0xF uPP.A.rcvThresh = UPP_TT_256B; uPP.A.useStart=1; uPP.A.useEnable=1; uPP.A.dataPacking=UPP_DP_RJUST_0FILL; //uPP.A.dataWidthVal=15; uPP.B.direction = UPP_DIR_RCV; uPP.B.dataRate = UPP_DR_SDR; uPP.B.dataWidthVal = dataWidth; uPP.B.idleValueVal = 0xBBBB; uPP.B.clkDivVal = 0x1; uPP.B.rcvThresh = UPP_TT_256B; uPP.B.useStart=1; uPP.B.useEnable=1; uPP.B.dataPacking=UPP_DP_RJUST_0FILL; uPP.loopback = UPP_LB_NONE; uPP.numChannelsVal = 2; uPP.useInterleave=0; status = upp_config(&uPP);
as i understood the direction of the pins is configured by above Initialisation right?
As i have read in the EvalBoards-scm some of the uPP-Pins are Bi-directional, is there any suggestion on how to configure these pins?
Many thanks in advance
Regards Martin