本文來源電子發燒友社區,作者:黃煉榕, 帖子地址:https://bbs.elecfans.com/jishu_2021255_1_1.html
既然有了gpio,那就先看看基于gpio實現的iic通信吧。別的不多說先弄清楚板子上的oLED引腳號。
把支持I2C的宏定義打開,該宏定義所在位置為:
vendorhisihi3861hi3861buildconfigusr_config.mk
找到后修改如下:CONFIG_I2C_SUPPORT=y
示例一個寫字節函數
void OLED_WR_Byte(uint8_t dat,uint8_t cmd){
hi_u8 m_send_data[2] = { 0 };
hi_u32 status;
hi_i2c_data hi3861_i2c_data = { 0 };
if(cmd) {
m_send_data[0] = 0x40;
}
else {
m_send_data[0] = 0x00;
}
m_send_data[1] = dat;
hi3861_i2c_data.send_buf = m_send_data;
hi3861_i2c_data.send_len = 2;
status = hi_i2c_write(HI_I2C_IDX_0, 0x78, &hi3861_i2c_data);
if (status != HI_ERR_SUCCESS) {
printf(" Error: I2C write status = 0x%x! rn", status);
return;
}
}
初始化oled還是跟以前一樣
void OLED_Init(void){
OLED_WR_Byte(0xAE,OLED_CMD); //--turn off oled panel OLED_WR_Byte(0x00,OLED_CMD); //---set low column address OLED_WR_Byte(0x10,OLED_CMD); //---set high column address OLED_WR_Byte(0x40,OLED_CMD); //--set start line addressSet Mapping RAMdisplayStart Line (0x00~0x3F)
OLED_WR_Byte(0x81,OLED_CMD); //--set contrast control register OLED_WR_Byte(0xCF,OLED_CMD); // Set SEG Output Current Brightness OLED_WR_Byte(0xA1,OLED_CMD); //--Set SEG/Column Mapping 0xa0左右反置 0xa1正常
OLED_WR_Byte(0xC8,OLED_CMD); //Set COM/Row Scan Direction 0xc0上下反置 0xc8正常
OLED_WR_Byte(0xA6,OLED_CMD); //--set normal display OLED_WR_Byte(0xA8,OLED_CMD); //--set multiplex ratio(1 to 64) OLED_WR_Byte(0x3f,OLED_CMD); //--1/64 duty OLED_WR_Byte(0xD3,OLED_CMD); //-set display offset Shift Mapping RAM Counter (0x00~0x3F)
OLED_WR_Byte(0x00,OLED_CMD); //-not offset OLED_WR_Byte(0xd5,OLED_CMD); //--set displayclockdivide ratio/oscillator frequency
OLED_WR_Byte(0x80,OLED_CMD); //--set divide ratio, Set Clock as 100 Frames/Sec
OLED_WR_Byte(0xD9,OLED_CMD); //--set pre-charge period OLED_WR_Byte(0xF1,OLED_CMD); //Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
OLED_WR_Byte(0xDA,OLED_CMD); //--set com pins hardware configuration OLED_WR_Byte(0x12,OLED_CMD);
OLED_WR_Byte(0xDB,OLED_CMD); //--set vcomh OLED_WR_Byte(0x40,OLED_CMD); //Set VCOM Deselect Level OLED_WR_Byte(0x20,OLED_CMD); //-Set Page Addressing Mode (0x00/0x01/0x02)
OLED_WR_Byte(0x02,OLED_CMD); //
OLED_WR_Byte(0x8D,OLED_CMD); //--set Charge Pump enable/disable OLED_WR_Byte(0x14,OLED_CMD); //--set(0x10) disable OLED_WR_Byte(0xA4,OLED_CMD); // Disable Entire Display On (0xa4/0xa5) OLED_WR_Byte(0xA6,OLED_CMD); // Disable Inverse Display On (0xa6/a7) OLED_WR_Byte(0xAF,OLED_CMD); //--turn on oled panel OLED_WR_Byte(0xAF,OLED_CMD); /*display ON*/ OLED_Clear(); OLED_Set_Pos(0,0); }
void OLED_Demo(void){
OLED_Init();
OLED_Clear();
for(i=0;i<8;i++)? ? {
OLED_ShowCHinese(i*16,0,i+0);
}
for(i=0;i<7;i++)? ? {
OLED_ShowCHinese(i*16,2,i+8);
}
for(i=0;i<4;i++)? ? {
OLED_ShowCHinese(i*16,4,i+15);
}
for(i=0;i<4;i++)? ? {
OLED_ShowCHinese(i*16,6,i+19);
}
}
SYS_RUN(OLED_Demo);
編譯燒錄即可
既然有了gpio,那就先看看基于gpio實現的iic通信吧。別的不多說先弄清楚板子上的oLED引腳號。
OLED | |
VCC | |
GND | |
SCL | GPIO14 |
SDA | GPIO13 |
把支持I2C的宏定義打開,該宏定義所在位置為:
vendorhisihi3861hi3861buildconfigusr_config.mk
找到后修改如下:CONFIG_I2C_SUPPORT=y
示例一個寫字節函數
void OLED_WR_Byte(uint8_t dat,uint8_t cmd){
hi_u8 m_send_data[2] = { 0 };
hi_u32 status;
hi_i2c_data hi3861_i2c_data = { 0 };
if(cmd) {
m_send_data[0] = 0x40;
}
else {
m_send_data[0] = 0x00;
}
m_send_data[1] = dat;
hi3861_i2c_data.send_buf = m_send_data;
hi3861_i2c_data.send_len = 2;
status = hi_i2c_write(HI_I2C_IDX_0, 0x78, &hi3861_i2c_data);
if (status != HI_ERR_SUCCESS) {
printf(" Error: I2C write status = 0x%x! rn", status);
return;
}
}
初始化oled還是跟以前一樣
void OLED_Init(void){
OLED_WR_Byte(0xAE,OLED_CMD); //--turn off oled panel OLED_WR_Byte(0x00,OLED_CMD); //---set low column address OLED_WR_Byte(0x10,OLED_CMD); //---set high column address OLED_WR_Byte(0x40,OLED_CMD); //--set start line addressSet Mapping RAMdisplayStart Line (0x00~0x3F)
OLED_WR_Byte(0x81,OLED_CMD); //--set contrast control register OLED_WR_Byte(0xCF,OLED_CMD); // Set SEG Output Current Brightness OLED_WR_Byte(0xA1,OLED_CMD); //--Set SEG/Column Mapping 0xa0左右反置 0xa1正常
OLED_WR_Byte(0xC8,OLED_CMD); //Set COM/Row Scan Direction 0xc0上下反置 0xc8正常
OLED_WR_Byte(0xA6,OLED_CMD); //--set normal display OLED_WR_Byte(0xA8,OLED_CMD); //--set multiplex ratio(1 to 64) OLED_WR_Byte(0x3f,OLED_CMD); //--1/64 duty OLED_WR_Byte(0xD3,OLED_CMD); //-set display offset Shift Mapping RAM Counter (0x00~0x3F)
OLED_WR_Byte(0x00,OLED_CMD); //-not offset OLED_WR_Byte(0xd5,OLED_CMD); //--set displayclockdivide ratio/oscillator frequency
OLED_WR_Byte(0x80,OLED_CMD); //--set divide ratio, Set Clock as 100 Frames/Sec
OLED_WR_Byte(0xD9,OLED_CMD); //--set pre-charge period OLED_WR_Byte(0xF1,OLED_CMD); //Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
OLED_WR_Byte(0xDA,OLED_CMD); //--set com pins hardware configuration OLED_WR_Byte(0x12,OLED_CMD);
OLED_WR_Byte(0xDB,OLED_CMD); //--set vcomh OLED_WR_Byte(0x40,OLED_CMD); //Set VCOM Deselect Level OLED_WR_Byte(0x20,OLED_CMD); //-Set Page Addressing Mode (0x00/0x01/0x02)
OLED_WR_Byte(0x02,OLED_CMD); //
OLED_WR_Byte(0x8D,OLED_CMD); //--set Charge Pump enable/disable OLED_WR_Byte(0x14,OLED_CMD); //--set(0x10) disable OLED_WR_Byte(0xA4,OLED_CMD); // Disable Entire Display On (0xa4/0xa5) OLED_WR_Byte(0xA6,OLED_CMD); // Disable Inverse Display On (0xa6/a7) OLED_WR_Byte(0xAF,OLED_CMD); //--turn on oled panel OLED_WR_Byte(0xAF,OLED_CMD); /*display ON*/ OLED_Clear(); OLED_Set_Pos(0,0); }
void OLED_Demo(void){
OLED_Init();
OLED_Clear();
for(i=0;i<8;i++)? ? {
OLED_ShowCHinese(i*16,0,i+0);
}
for(i=0;i<7;i++)? ? {
OLED_ShowCHinese(i*16,2,i+8);
}
for(i=0;i<4;i++)? ? {
OLED_ShowCHinese(i*16,4,i+15);
}
for(i=0;i<4;i++)? ? {
OLED_ShowCHinese(i*16,6,i+19);
}
}
SYS_RUN(OLED_Demo);
編譯燒錄即可
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
wi-fi
+關注
關注
14文章
2147瀏覽量
124612 -
HarmonyOS
+關注
關注
79文章
1979瀏覽量
30274 -
HiSpark
+關注
關注
1文章
156瀏覽量
6938
發布評論請先 登錄
相關推薦
Wi-Fi 8要來了!未來Wi-Fi技術演進方向揭秘
產品銷售中,雖然Wi-Fi 7產品的銷量份額快速從年初的個位數百分比增長至14%,但Wi-Fi 6產品的銷量份額依然穩定在60%左右。如果從存量設備來看,那么Wi-Fi 7路由器的占比將遠遠小于這個數。 ? 智能手機等終端設備已
華為海思正式進入Wi-Fi FEM賽道?
大家都知道了,2018年11 月離開銳迪科(RDA),前往福建晉江創立三伍微,專注于Wi-Fi射頻前端芯片,從路由器Wi-Fi FEM,到手機Wi-Fi FEM,再到IoT FEM全覆
發表于 12-11 17:42
從Wi-Fi 4到Wi-Fi 7:網速飆升40倍的無線革命
1 Wi-Fi技術的快速發展 每一代新的Wi-Fi協議發布,都會帶來更高的無線速率。 ? 從Wi-Fi 4到Wi-Fi 7:無線網絡技術顯著提升,實現了網速的巨大飛躍。 ? ?
Wi-Fi 7與Wi-Fi 6E有什么區別
也許很多人還在考慮是否要將使用的Wi-Fi設備升級到Wi-Fi 6或Wi-Fi 6E,而這些標準的繼任者卻已經開始“登堂入室”了。Wi-Fi 7是新一代
未來的Wi-Fi路由器
轉載自——鐘林談芯 沒有創新就沒有未來,Wi-Fi路由器也是如此。 進入2024年以后,Wi-Fi路由器市場變得更加艱難,利潤大幅下滑,BOM成本價高于市場價,接不接訂單,都陷入兩難。 國內主芯片
DA16200 超低功耗 Wi-Fi 模塊開發套件 Pro數據手冊
電子發燒友網站提供《DA16200 超低功耗 Wi-Fi 模塊開發套件 Pro數據手冊.rar》資料免費下載
發表于 05-30 17:53
?1次下載
DA16200 超低功耗 Wi-Fi 模塊開發套件數據手冊
電子發燒友網站提供《DA16200 超低功耗 Wi-Fi 模塊開發套件數據手冊.rar》資料免費下載
發表于 05-30 17:13
?0次下載
驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦
驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦 MM6108-EKH08開發套件專為驗證物聯網Wi-Fi HaLow用例而設計。該
Wi-Fi的誕生與發展
短距離無線通信技術有Wi-Fi、ZigBee、藍牙以及Z-Wave,今天我們先揭開Wi-Fi的神秘面紗。Chrent短距離無線通信技術——Wi-Fi過去的20多年,Wi-Fi靠著僅有的
Wi-Fi HaLow和傳統Wi-Fi的區別
Wi-Fi HaLow和傳統Wi-Fi的區別? Wi-Fi是一種無線網絡技術,可以連接到互聯網或局域網,為用戶提供無線上網的便利。隨著科技的發展和互聯網的普及,Wi-Fi也在不斷演進和
康普攜手Wi-Fi聯盟,RUCKUS Wi-Fi 7系列接入點成Wi-Fi
康普高級副總裁兼網絡、智能蜂窩和安全解決方案總裁Bart Giordano對此表示: “我們非常榮幸能與Wi-Fi Alliance形成長期合作伙伴關系,將我們的RUCKUS Wi-Fi 7 接入點平臺作為Wi-Fi CERT
BT Wi-Fi模式是否可以通過ModustoolBox對套件進行編程來實現?
想配置用于分析 CYW43439 的 CY8CPROTO-062S2-43439 原型開發套件。
瀏覽文檔我無法弄清楚如何在不同的 Wi-Fi 和藍牙模式(電源模式、連接模式等)下配置套件。
在
發表于 01-22 06:19
評論