本文來源電子發(fā)燒友社區(qū),作者:黃煉榕, 帖子地址:https://bbs.elecfans.com/jishu_2021255_1_1.html
既然有了gpio,那就先看看基于gpio實現(xiàn)的iic通信吧。別的不多說先弄清楚板子上的oLED引腳號。
把支持I2C的宏定義打開,該宏定義所在位置為:
vendorhisihi3861hi3861buildconfigusr_config.mk
找到后修改如下:CONFIG_I2C_SUPPORT=y
示例一個寫字節(jié)函數(shù)
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實現(xiàn)的iic通信吧。別的不多說先弄清楚板子上的oLED引腳號。
OLED | |
VCC | |
GND | |
SCL | GPIO14 |
SDA | GPIO13 |
把支持I2C的宏定義打開,該宏定義所在位置為:
vendorhisihi3861hi3861buildconfigusr_config.mk
找到后修改如下:CONFIG_I2C_SUPPORT=y
示例一個寫字節(jié)函數(shù)
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);
編譯燒錄即可
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
wi-fi
+關(guān)注
關(guān)注
14文章
2169瀏覽量
124827 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1982瀏覽量
30414 -
HiSpark
+關(guān)注
關(guān)注
1文章
156瀏覽量
6945
發(fā)布評論請先 登錄
相關(guān)推薦
Wi-Fi 8要來了!未來Wi-Fi技術(shù)演進方向揭秘
產(chǎn)品銷售中,雖然Wi-Fi 7產(chǎn)品的銷量份額快速從年初的個位數(shù)百分比增長至14%,但Wi-Fi 6產(chǎn)品的銷量份額依然穩(wěn)定在60%左右。如果從存量設(shè)備來看,那么Wi-Fi 7路由器的占比將遠遠小于這個數(shù)。 ? 智能手機等終端設(shè)備已
華為海思正式進入Wi-Fi FEM賽道?
大家都知道了,2018年11 月離開銳迪科(RDA),前往福建晉江創(chuàng)立三伍微,專注于Wi-Fi射頻前端芯片,從路由器Wi-Fi FEM,到手機Wi-Fi FEM,再到IoT FEM全覆
發(fā)表于 12-11 17:42
摩爾斯微電子發(fā)布Wi-Fi HaLow評估套件,加速物聯(lián)網(wǎng)開發(fā)
近日,全球領(lǐng)先的Wi-Fi HaLow解決方案提供商摩爾斯微電子正式推出一款開創(chuàng)性的評估套件——MM6108-EKH05。這款完全整合的開發(fā)平臺,旨在推動各行業(yè)物聯(lián)網(wǎng)解決方案的快速發(fā)展
從Wi-Fi 4到Wi-Fi 7:網(wǎng)速飆升40倍的無線革命
1 Wi-Fi技術(shù)的快速發(fā)展 每一代新的Wi-Fi協(xié)議發(fā)布,都會帶來更高的無線速率。 ? 從Wi-Fi 4到Wi-Fi 7:無線網(wǎng)絡(luò)技術(shù)顯著提升,實現(xiàn)了網(wǎng)速的巨大飛躍。 ? ?
Wi-Fi 7與Wi-Fi 6E有什么區(qū)別
也許很多人還在考慮是否要將使用的Wi-Fi設(shè)備升級到Wi-Fi 6或Wi-Fi 6E,而這些標準的繼任者卻已經(jīng)開始“登堂入室”了。Wi-Fi 7是新一代
未來的Wi-Fi路由器
轉(zhuǎn)載自——鐘林談芯 沒有創(chuàng)新就沒有未來,Wi-Fi路由器也是如此。 進入2024年以后,Wi-Fi路由器市場變得更加艱難,利潤大幅下滑,BOM成本價高于市場價,接不接訂單,都陷入兩難。 國內(nèi)主芯片
ESP32 D0WDQ6設(shè)計的板子,ADC2與Wi-Fi驅(qū)動程序可以同時工作嗎?
板子使用 GPIO27作為ADC2 通道7去采集模擬量,調(diào)試會打印wifi in use。然后網(wǎng)上搜索到:Wi-Fi 驅(qū)動程序使用了ADC2,應(yīng)用程序只能在未啟動Wi-Fi時使用ADC2。
因為
發(fā)表于 06-20 08:17
DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件 Pro數(shù)據(jù)手冊
電子發(fā)燒友網(wǎng)站提供《DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件 Pro數(shù)據(jù)手冊.rar》資料免費下載
發(fā)表于 05-30 17:53
?1次下載
DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件數(shù)據(jù)手冊
電子發(fā)燒友網(wǎng)站提供《DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件數(shù)據(jù)手冊.rar》資料免費下載
發(fā)表于 05-30 17:13
?0次下載
華為獲得全球首個國際Wi-Fi聯(lián)盟WFA企業(yè)級Wi-Fi 7認證!
Wi-Fi聯(lián)盟已發(fā)布Wi-Fi 7認證標準,華為是第一批送測廠商,獲得業(yè)界首個企業(yè)級Wi-Fi 7 的Wi-Fi聯(lián)盟官方認證。
驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例的MM6108-EKH08開發(fā)套件來啦
驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例的MM6108-EKH08開發(fā)套件來啦 MM6108-EKH08開發(fā)套件專為驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例而設(shè)計。該
Wi-Fi的誕生與發(fā)展
短距離無線通信技術(shù)有Wi-Fi、ZigBee、藍牙以及Z-Wave,今天我們先揭開Wi-Fi的神秘面紗。Chrent短距離無線通信技術(shù)——Wi-Fi過去的20多年,Wi-Fi靠著僅有的
Wi-Fi HaLow和傳統(tǒng)Wi-Fi的區(qū)別
Wi-Fi HaLow和傳統(tǒng)Wi-Fi的區(qū)別? Wi-Fi是一種無線網(wǎng)絡(luò)技術(shù),可以連接到互聯(lián)網(wǎng)或局域網(wǎng),為用戶提供無線上網(wǎng)的便利。隨著科技的發(fā)展和互聯(lián)網(wǎng)的普及,Wi-Fi也在不斷演進和
評論