完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
25个回答
|
|
|
|
|
|
用了!我先使用GEL 初始化HDVPSS ,完后连接ISS M3 。加载程序后。运行了,但示波器看I2C 波形没有变化,我初始化了pinmux 中我使用的I2C !但没有i2c的信号跳变! |
|
|
|
toomuchsnow 发表于 2018-6-23 02:19 Du Qigong, 测量的引脚是否正确?可以配置该引脚为GPIO,看看是否输出正常么? |
|
|
|
在HDVPSS 的代码基础上怎么设置 GPIO 高低变化一下 ?是不是还需要配置ARM Supervisor模式 ? |
|
|
|
Du Qigong, 请参考一下一下A8 gel里面的GPIO_Enable,和TRM里面GPIO相关章节。Pinmux要配置为GPIO功能。 |
|
|
|
gpio 设置后没有问题。可以正常变化高低电平,我用的是 VOUT[1]_R_CR[3]/GPMC_A[14]/VIN[1]A_D[22]/HDMI_SDA/SPI[2]_SCLK/I2C[2]_SDA/GP3[21] 和 VOUT[1]_G_Y_YC[2]/GPMC_A[13]/VIN[1]A_D[21]/HDMI_SCL/SPI[2]_SCS[2]n/I2C[2]_SCL/GP3[20] 在vps_platformTI8107.C 中设置 /* I2c2 configuration Function 6*/ #if defined(TI_8107_BUILD) REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B8C) = 0x60040; /* i2c2_scl_mux0 */ REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B90) = 0x60040; /* i2c2_sda_mux0 */ #endif 后单步调试就在I2C2内过不去。软件内部使用的是中断!这处有没有什么影响 ?我尝试读取外部的ADV7180 0x42 但每次有看到读取的数值不对! |
|
|
|
toomuchsnow 发表于 2018-6-23 03:13 Du Qigong, I2C内什么地方过不去?I2C是否有正确上拉?数据和时钟线上都没有信号输出么? |
|
|
|
上拉是有的 !两个上面都没有信号!我过不去是在执行到i2c读写的时候过不去! |
|
|
|
Du Qigong, 能在继续往下面跟一下代码,看看具体挂在了哪里?是I2C发送指令,还是等待ACK,或者其他。 |
|
|
|
跟踪到psp_i2cdev.c内的PSP_i2cProbe 函数,到 if (!(I2C_READ_REG_WORD(&instObj->i2cRegs->I2C_IRQSTATUS_RAW) & I2C_STAT_NACK)) [ res = 0; /* success case */ flush_fifo(instanceId); I2C_WRITE_REG_WORD(0xFFFF, &instObj->i2cRegs->I2C_IRQSTATUS); ] else [ I2C_WRITE_REG_WORD(0xFFFF, &instObj->i2cRegs->I2C_IRQSTATUS); /* failue, clear sources*/ I2C_WRITE_REG_WORD(I2C_READ_REG_WORD(&instObj->i2cRegs->I2C_CON) | I2C_CON_STP, &instObj->i2cRegs->I2C_CON); /* finish up xfer */ udelay(I2C_DELAY_MED ); wait_for_bb (instanceId); ] 这就过不去了。应该是没有收到ACK ,还有一个问题就是我的i2c 的波形看起来好像不对。没有像正常I2C 读写一样发出SLAVE ADDR REG ADDR DATA 这样的 |
|
|
|
toomuchsnow 发表于 2018-6-23 04:05 Du Qigong, 之前你说I2C“我用示波器看没有什么反应”,是否就是和现你发的信号图的状态是一样的? 请问信号上的毛刺是你测量的问题么? 请问你能否确认外部i2c设备本身是否工作正常? |
|
|
|
第一个是之前我没有修改PINMUX 到我实际使用的I2C 管脚。修改后就看到了波形,毛刺的问题这个我也有点疑惑,应该不是测量的问题,我将I2C 速度降到100K , 外部的I2C 设备是正常的 ,我同一个代码在不同的板子上都试了,结果都一样,还有一个问题 。 在VPS_platfrom8107.c中有一处 /* I2C2 interrupt is routed through I2C1 interrupt through the * cros***ar. For this, INT_MUX_[#int_number] register in the * Chip Control Module needs to be programmed. * INT_MUX_[#int_number] registers start from 0xF54 * offset and one register is used to program 4 interrupt * muxes (6 bits for each mux, 2 bits reserved). * After reset INT_MUX_[#int_number] defaults to 000000, which * maps the interrupt from default mapping to interrupt_[#int_number]. * * I2C_INT1 is mapped to interrupt line 19 and * INTMUX 16 to 19 --> 0x0f64. So read it first, * modify the respective bit field and write is back. */ int_mux = REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0f64); /* I2CINT2 value = 4, INT_MUX_19_SHIFT = 24*/ int_mux |= (4 << 24); REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0f64) = int_mux; return (FVID2_SOK); ] 这个,描述的中断复用的问题,我在手册上没有找到这部分的描述信息,这个怎么配置,? |
|
|
|
toomuchsnow 发表于 2018-6-23 04:30 |
|
|
|
这处我看到了,我想问的是我怎么知道那个复用的是I2C1 那个是I2C2 I2C3 现在我不是很明确那个链接的是那个! |
|
|
|
我修改了代码!现在可以用I2C 读写测试成功了!但是在代码里面执行Vps_deviceI2cProbeDevice 的时候依旧失败!这处是怎么回事 ? |
|
|
|
toomuchsnow 发表于 2018-6-23 05:04 这个我解决了!上面有一处的延时太大,导致NACK 检测失败,现在在HDVPSS 下我同时是用来I2C1 I2C2 在 static Int32 Vps_platformTI8107SetIntMux(void) [ volatile unsigned int int_mux; /* I2C2 interrupt is routed through I2C1 interrupt through the * cros***ar. For this, INT_MUX_[#int_number] register in the * Chip Control Module needs to be programmed. * INT_MUX_[#int_number] registers start from 0xF54 * offset and one register is used to program 4 interrupt * muxes (6 bits for each mux, 2 bits reserved). * After reset INT_MUX_[#int_number] defaults to 000000, which * maps the interrupt from default mapping to interrupt_[#int_number]. * * I2C_INT1 is mapped to interrupt line 19 and * INTMUX 16 to 19 --> 0x0f64. So read it first, * modify the respective bit field and write is back. */ int_mux = REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0f64); /* I2CINT2 value = 4, INT_MUX_19_SHIFT = 24*/ int_mux |= (4 << 24); REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0f64) = int_mux; return (FVID2_SOK); ] 我该怎么加入中断1的 ,这处我的理解不是很清楚!能否讲解一下? |
|
|
|
toomuchsnow 发表于 2018-6-23 05:18 Du Qigong, 你同时使用了DM385上的两个I2C接口做master?如果是,为什么?I2C总线上可以挂多个slave设备。 你的问题我不是很理解,你现在是要在M3上使能某个I2C的中断? |
|
|
|
物是人非aaa 发表于 2018-6-23 05:36 我现在在硬件上用i2c1 i2c2分别控制了一个 视频解码器,这个在这一版的基础上我不能使用一个I2C 控制,现在我在代码内要加入I2C1 的代码,也就是在如上的问题中我添加I2C1 的中断复用代码,我对于在 Vps_platformTI8107SetIntMux(void) [ volatile unsigned int int_mux; /* I2C2 interrupt is routed through I2C1 interrupt through the * cros***ar. For this, INT_MUX_[#int_number] register in the * Chip Control Module needs to be programmed. * INT_MUX_[#int_number] registers start from 0xF54 * offset and one register is used to program 4 interrupt * muxes (6 bits for each mux, 2 bits reserved). * After reset INT_MUX_[#int_number] defaults to 000000, which * maps the interrupt from default mapping to interrupt_[#int_number]. * * I2C_INT1 is mapped to interrupt line 19 and * INTMUX 16 to 19 --> 0x0f64. So read it first, * modify the respective bit field and write is back. */ int_mux = REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0f64); /* I2CINT2 value = 4, INT_MUX_19_SHIFT = 24*/ int_mux |= (4 << 24); REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0f64) = int_mux; return (FVID2_SOK); ] 这处,不是很清楚,现在设置中断复用是I2C2 的 ,我打开了I2C1 也使用这个的话就必须要使用I2C1 的中断 ,我看了TRM 中相关信息,不知道为什么在这处代码中要写I2CINT2 value = 4, INT_MUX_19_SHIFT = 24 ?就这处不是很明白 ! |
|
|
|
toomuchsnow 发表于 2018-6-23 05:45 Du Qigong, 你可以参考一下DM8148 TRM的1.7.4 Interrupt Requests to Media Controller INTC section (M3 interrupt) 章节,你可以了解到M3的中断数小于M3的中断源的数据。所以有些中断默认是M3的中断,例如I2C1的中断。但有些是不在默认中断里的,例如I2C2中断,如果要使用是需要map到默认的中断号上的。目前的配置是把I2C2的中断map到了默认I2C1的中断号上。在你的应用里面,你需要寻找另一个你不是用的默认中断然后配置为I2C2中断。 代码里面,I2C2的Media_Controller_INTMUX_xValue=4. 但是I2C1的中断号应该是42,不知道为什么代码里面用了19. 如果是中断号19,配置它mux的寄存器是Media_Controller_INTMUX_16_19的bit24~29,所以要shift 24bit。 |
|
|
|
只有小组成员才能发言,加入小组>>
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
577 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1028 浏览 1 评论
677 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
500 浏览 1 评论
1024 浏览 0 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
130浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
102浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
111浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
109浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
137浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 16:15 , Processed in 1.652448 second(s), Total 82, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号