OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 751|回复: 10

求助I2C

[复制链接]

  离线 

7

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
284
金钱
284
注册时间
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发送、接收字节等一系列封装好的函数。 直接代入使用即可。
回复

使用道具 举报

  离线 

5

主题

441

帖子

0

精华

高级会员

Rank: 4

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

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

直接代入使用即可。
回复

使用道具 举报

  离线 

7

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

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

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

使用道具 举报

  离线 

5

主题

441

帖子

0

精华

高级会员

Rank: 4

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

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

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

使用道具 举报

  离线 

0

主题

14

帖子

0

精华

新手上路

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

使用道具 举报

  离线 

116

主题

7627

帖子

12

精华

资深版主

Rank: 8Rank: 8

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

使用道具 举报

  离线 

5

主题

441

帖子

0

精华

高级会员

Rank: 4

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

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

使用道具 举报

  离线 

116

主题

7627

帖子

12

精华

资深版主

Rank: 8Rank: 8

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

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

使用道具 举报

  离线 

5

主题

441

帖子

0

精华

高级会员

Rank: 4

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

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

使用道具 举报

  离线 

116

主题

7627

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
11180
金钱
11180
注册时间
2013-9-10
在线时间
366 小时
发表于 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

积分
284
金钱
284
注册时间
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, 下载次数: 27

回复

使用道具 举报

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

本版积分规则




关闭

报名原子哥新品发布会&粉丝见面会上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-10-18 15:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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