OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4247|回复: 11

求助I2C

[复制链接]

7

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
285
金钱
285
注册时间
2017-10-3
在线时间
68 小时
发表于 2018-1-30 18:03:07 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 farmer30175 于 2018-1-30 18:31 编辑

各位大大水水好

想點亮一個光機
採用STM32F4系列的晶片
需要先做一些initial的動作
想請問一下有此種I2C  initail的寫法
或是可以參考哪個example下去修改
困惑很久 沒有頭緒

data sheet 上寫到
-----------------------------------------

device                   |    address
-----------------------------------------
ASIC(HX7816)        |     0x3c
-----------------------------------------
LCOS(HX7318)       |    0x49
-----------------------------------------

the sequence is://開機流程
LCOS setting   >>   asic_disable    >>   asic_config    >>     ASIC_Enable

lcos_config
    i2c_xfer w 0x49 0x00 0x21
    i2c_xfer w 0x49 0x13 0x45
    i2c_xfer w 0x49 0x14 0x80
............
............
約30行

asic_disable
    i2c_xfer w 0x3c 0xf0 0x00

asic_config(WXGA resolution,60FPS,8sub-frames RRGGBBGG)  //WXGA:1280*720   frame rate:60  RRGGBBGG data format
    i2c_xfer w 0x3c 0xfe 0x33
    i2c_xfer w 0x3c 0x10 0x07
    i2c_xfer w 0x3c 0x11 0x58
............
............
約300多行

asic_enable
    i2c_xfer w 0x3c 0xf0 0x11







最佳答案

查看完整内容[请看2#楼]

不知道你所谓的“光機”用简体中文怎么表达。 STM32官方的HAL库已经给出了包括初始化I2C总线,向i2c发送、接收字节等一系列封装好的函数。 直接代入使用即可。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-1-30 18:03:08 | 显示全部楼层
不知道你所谓的“光機”用简体中文怎么表达。

STM32官方的HAL库已经给出了包括初始化I2C总线,向i2c发送、接收字节等一系列封装好的函数。

直接代入使用即可。
回复

使用道具 举报

7

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
285
金钱
285
注册时间
2017-10-3
在线时间
68 小时
 楼主| 发表于 2018-1-30 18:20:25 | 显示全部楼层
2樓您好

光機就是指的是類似google glasses上的panel
他可以是LCD OLED LCOS... ....之類的

感謝你提供的意見這裡會TRY看看
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-1-30 18:31:21 | 显示全部楼层
farmer30175 发表于 2018-1-30 18:20
2樓您好

光機就是指的是類似google glasses上的panel

大概跟普通的显示屏差不多的吧。如果不采用STM32内置的I2C驱动器,也可以用GPIO模拟I2C操作。
回复

使用道具 举报

0

主题

19

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2018-1-29
在线时间
5 小时
发表于 2018-1-30 18:54:59 | 显示全部楼层
如果是IIC接口的问题,可以直接用HAL库生成吧,,或者是使用*火库的例子
屏幕的问题的话,那就慢慢调试嘛
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2018-1-30 21:29:47 | 显示全部楼层
IO模拟吧,F4你使用硬件I2C的话,得慢慢调了,最近刚调通F3的硬件I2C Master,Slave已经在用了,加起来两个都通了,剩下I2C的DMA操作还没弄好
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-1-30 21:35:20 | 显示全部楼层
八度空间 发表于 2018-1-30 21:29
IO模拟吧,F4你使用硬件I2C的话,得慢慢调了,最近刚调通F3的硬件I2C Master,Slave已经在用了,加起来两个 ...

硬件I2C根本就是用hal拿来就可以用的呀,我用cubeMX自动生成代码从来没发现哪里用着不合适。如果调试寄存器,自然不是一般用户应该做的事情。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2018-1-30 21:37:43 | 显示全部楼层
a496298685 发表于 2018-1-30 21:35
硬件I2C根本就是用hal拿来就可以用的呀,我用cubeMX自动生成代码从来没发现哪里用着不合适。如果调试寄存 ...

我操作寄存器的,HAL库没用过
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-1-30 21:44:40 | 显示全部楼层
八度空间 发表于 2018-1-30 21:37
我操作寄存器的,HAL库没用过

您调试寄存器应该是出于学习目的,使用HAL库是出于快速开发目的,毕竟每个人目的不同。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2018-1-31 11:29:04 | 显示全部楼层
本帖最后由 八度空间 于 2018-1-31 11:40 编辑
a496298685 发表于 2018-1-30 21:44
您调试寄存器应该是出于学习目的,使用HAL库是出于快速开发目的,毕竟每个人目的不同。

是啊,每个人的目的不同,我做从设备的时候需要速度,用库的话起码中断服务函数跑一遍就>2us了,我现在操作寄存器,跑一圈就是1us到2us之间 QQ截图20180131113905.png
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

7

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
285
金钱
285
注册时间
2017-10-3
在线时间
68 小时
 楼主| 发表于 2018-2-12 11:53:30 | 显示全部楼层
先謝謝各位大大的回答
先在這祝大家新年快樂


這邊有再去閱讀一下相關資料應該是使用此函式就足夠了

/**
  * @brief  Transmits in master mode an amount of data in blocking mode.
  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
  *                the configuration information for the specified I2C.
  * @param  DevAddress Target device address: The device 7 bits address value
  *         in datasheet must be shift at right before call interface
  * @param  pData Pointer to data buffer
  * @param  Size Amount of data to be sent
  * @param  Timeout Timeout duration
  * @retval HAL status
  */
HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)

但在其他地方有看到此種寫法
  • while(HAL_I2C_Master_Transmit(&hi2c1,I2C1_WRITE_ADDRESS,&REG_Address,1,500) != HAL_OK)
  •     {
  •          if (HAL_I2C_GetError(&hi2c1) != HAL_I2C_ERROR_AF)
  •                 {
  •                   Error_Handler();
  •                 }
  •     }


看起來是判斷使否有完整的傳送完資料否則等待
如果純打此行

HAL_I2C_Master_Transmit(&hi2c3, lcos, (uint8_t *)Tx_Buffer169, Numberofdata, 1000);
可以動作嗎?
HDMI轉DSI DSI轉LVDS的板子還在PCB LAYOUT無法馬上做測試
故先來詢問

Ref: http://www.stmcu.org/module/forum/thread-599190-1-1.html


謝謝

dk50.rar

5.98 MB, 下载次数: 64

回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-12-9
在线时间
0 小时
发表于 2020-1-13 13:12:56 来自手机 | 显示全部楼层
您好,请问这个屏您点亮了吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-11 16:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表