[屏驱相关] SWM181如何通过硬件I2C驱动ssd1306屏幕

[复制链接]
1304|13
 楼主| perseverance51 发表于 2023-3-3 14:52 | 显示全部楼层 |阅读模式
SWM181如何通过硬件I2C驱动ssd1306屏幕,在官方的例程包,驱动I2C例程的只有一个驱动24C02的例程。
华芯微特FAE 发表于 2023-3-3 15:13 | 显示全部楼层
屏厂会给代码,自行移植即可

评论

你这是刷锅,屏幕厂家不会提供硬件方式I2c驱动程序的,一般只会给软件I2C驱动程序代码。  发表于 2023-3-3 17:17
 楼主| perseverance51 发表于 2023-3-3 17:19 | 显示全部楼层
软件方式就不用了,软件方式驱动已经实现。
 楼主| perseverance51 发表于 2023-3-3 17:21 | 显示全部楼层
  1. void I2C_Init(I2C_TypeDef * I2Cx, I2C_InitStructure * initStruct);
  2. 在SWM181_i2c.h文件中就提供了这么几个函数
  3. void I2C_Open(I2C_TypeDef * I2Cx);
  4. void I2C_Close(I2C_TypeDef * I2Cx);

  5. uint8_t I2C_Start(I2C_TypeDef * I2Cx, uint8_t addr);
  6. void I2C_Stop(I2C_TypeDef * I2Cx);
  7. uint8_t I2C_Write(I2C_TypeDef * I2Cx, uint8_t data);
  8. uint8_t I2C_Read(I2C_TypeDef * I2Cx, uint8_t ack);

  9. void I2C_INTEn(I2C_TypeDef * I2Cx);
  10. void I2C_INTDis(I2C_TypeDef * I2Cx);
  11. void I2C_INTClr(I2C_TypeDef * I2Cx);
  12. uint32_t I2C_INTStat(I2C_TypeDef * I2Cx);
 楼主| perseverance51 发表于 2023-3-3 17:26 | 显示全部楼层
看看STM32通过stm32cubemx自动生成的I2C硬件驱动函数,几分钟就可以通过硬件I2C接口点亮,我用SWM181花费几天都搞不定。国产当自强,不要刷锅!!!
  1.    (#) Blocking mode functions are :
  2.         (++) HAL_I2C_Master_Transmit()
  3.         (++) HAL_I2C_Master_Receive()
  4.         (++) HAL_I2C_Slave_Transmit()
  5.         (++) HAL_I2C_Slave_Receive()
  6.         (++) HAL_I2C_Mem_Write()
  7.         (++) HAL_I2C_Mem_Read()
  8.         (++) HAL_I2C_IsDeviceReady()

  9.     (#) No-Blocking mode functions with Interrupt are :
  10.         (++) HAL_I2C_Master_Transmit_IT()
  11.         (++) HAL_I2C_Master_Receive_IT()
  12.         (++) HAL_I2C_Slave_Transmit_IT()
  13.         (++) HAL_I2C_Slave_Receive_IT()
  14.         (++) HAL_I2C_Mem_Write_IT()
  15.         (++) HAL_I2C_Mem_Read_IT()
  16.         (++) HAL_I2C_Master_Seq_Transmit_IT()
  17.         (++) HAL_I2C_Master_Seq_Receive_IT()
  18.         (++) HAL_I2C_Slave_Seq_Transmit_IT()
  19.         (++) HAL_I2C_Slave_Seq_Receive_IT()
  20.         (++) HAL_I2C_EnableListen_IT()
  21.         (++) HAL_I2C_DisableListen_IT()
  22.         (++) HAL_I2C_Master_Abort_IT()

  23.     (#) No-Blocking mode functions with DMA are :
  24.         (++) HAL_I2C_Master_Transmit_DMA()
  25.         (++) HAL_I2C_Master_Receive_DMA()
  26.         (++) HAL_I2C_Slave_Transmit_DMA()
  27.         (++) HAL_I2C_Slave_Receive_DMA()
  28.         (++) HAL_I2C_Mem_Write_DMA()
  29.         (++) HAL_I2C_Mem_Read_DMA()
  30.         (++) HAL_I2C_Master_Seq_Transmit_DMA()
  31.         (++) HAL_I2C_Master_Seq_Receive_DMA()
  32.         (++) HAL_I2C_Slave_Seq_Transmit_DMA()
  33.         (++) HAL_I2C_Slave_Seq_Receive_DMA()

  34.     (#) A set of Transfer Complete Callbacks are provided in non Blocking mode:
  35.         (++) HAL_I2C_MasterTxCpltCallback()
  36.         (++) HAL_I2C_MasterRxCpltCallback()
  37.         (++) HAL_I2C_SlaveTxCpltCallback()
  38.         (++) HAL_I2C_SlaveRxCpltCallback()
  39.         (++) HAL_I2C_MemTxCpltCallback()
  40.         (++) HAL_I2C_MemRxCpltCallback()
  41.         (++) HAL_I2C_AddrCallback()
  42.         (++) HAL_I2C_ListenCpltCallback()
  43.         (++) HAL_I2C_ErrorCallback()
  44.         (++) HAL_I2C_AbortCpltCallback()
timerc 发表于 2023-3-6 11:43 | 显示全部楼层
就是懒,也就稍微改一下的功夫
primojones 发表于 2023-3-10 17:23 | 显示全部楼层
硬件I2C 到底是不是个坑               
gygp 发表于 2023-3-10 17:38 | 显示全部楼层
硬件iic和模拟iic有什么区别  
belindagraham 发表于 2023-3-10 17:53 | 显示全部楼层
这个代码是官网提供的吗?              
hilahope 发表于 2023-3-10 18:02 | 显示全部楼层
I2c总线一般拿来实现什么功能?  
everyrobin 发表于 2023-3-10 18:08 | 显示全部楼层
ssd1306的刷屏速度很快的吗?
jkl21 发表于 2023-3-10 18:23 | 显示全部楼层
SWM181的硬件I2C稳定吗              
biechedan 发表于 2023-3-11 19:40 | 显示全部楼层
提供了标准库函数了吗?              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

30

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部