使用國產單片機是什麼體驗?(文末申請開發板測評)

2021-01-11 電子工程專輯

伴隨著濃濃的中國芯熱情下,國產晶片越來越好了,國產單片機也逐漸成為工程師的優選。


那麼用國產單片機開發究竟是怎樣的體驗?


1、利用東軟載波開發板進行ADC及PWM調光測試

這位工程師是來自21ic論壇的用戶hbzjt2011,他選用了ES32F0654LT進行這次開發。 ES32F0654LT集成的支持 1 路模數轉換器(ADC0)。ADC(Analog to Digital Convertor)是 12 位解析度的逐次逼近型模數轉換器。它具有多達 19 個復用通道,可測量從管腳輸入的 16 個外部信號、3 個內部信號。這些通道的模數轉換可在單次、連續、掃描或不連續採樣模式下進行。ADC 的結果存儲在一個左對齊或右對齊的 16 位數據寄存器中。 ESF0654 PDS開發板ADC接在PB0接口,PB0為ADC0的14通道。



IO引腳配置如下:


static void adc_pin_init(void){ gpio_init_t x;
x.mode = GPIO_MODE_INPUT; x.odos = GPIO_PUSH_PULL; x.pupd = GPIO_PUSH_UP; x.odrv = GPIO_OUT_DRIVE_NORMAL; x.flt = GPIO_FILTER_DISABLE; x.type = GPIO_TYPE_TTL; x.func = GPIO_FUNC_0; ald_gpio_init(GPIOB, GPIO_PIN_0, &x);
return;}


ADC0的配置如下:


void adc_init(void){ memset(&h_adc, 0x0, sizeof(adc_handle_t)); memset(®_config, 0x0, sizeof(adc_nch_conf_t));
adc_pin_init();
h_adc.perh = ADC0; h_adc.init.data_align = ADC_DATAALIGN_RIGHT; h_adc.init.scan_mode = DISABLE; h_adc.init.cont_mode = DISABLE; h_adc.init.nch_len = ADC_NCH_LEN_1; h_adc.init.disc_mode = ADC_ALL_DISABLE; h_adc.init.disc_nbr = ADC_DISC_NBR_1; h_adc.init.conv_res = ADC_CONV_RES_10; h_adc.init.clk_div = ADC_CKDIV_128; h_adc.init.neg_ref = ADC_NEG_REF_VSS; h_adc.init.pos_ref = ADC_POS_REF_VDD;
ald_adc_init(&h_adc);
reg_config.channel = ADC_CHANNEL_14; reg_config.rank = ADC_NCH_RANK_1; reg_config.samp_time = ADC_SAMPLETIME_4; ald_adc_normal_channel_config(&h_adc, ®_config);
return;}


ES32F0654LT集成通用定時器(GP16C2T)包含一個 16 位自動重載計數器,該計數器由可配置的預分頻器驅動。支持 2 路通用定時器(GP16C2T0,GP16C2T1) 。GP16C2T 包含 2 個獨立通道。通用定時器(GP16C2T) 的用途廣泛,可測量信號脈衝長度(輸入捕獲)或輸出脈衝波形 (比較輸出、PWM 及帶死區時間插入的互補 PWM)。 本程序中使用了TIM3的1通道,對應引腳為PC6。


static void tim3_pin_init(void){ gpio_init_t GPIO_InitStructure;
GPIO_InitStructure.mode = GPIO_MODE_OUTPUT; GPIO_InitStructure.odos = GPIO_PUSH_PULL; GPIO_InitStructure.pupd = GPIO_PUSH_UP; GPIO_InitStructure.odrv = GPIO_OUT_DRIVE_NORMAL; GPIO_InitStructure.flt = GPIO_FILTER_DISABLE; GPIO_InitStructure.type = GPIO_TYPE_TTL; GPIO_InitStructure.func = GPIO_FUNC_3;
ald_gpio_init(GPIOC, GPIO_PIN_6, &GPIO_InitStructure);
}


TIM3初始化程序如下:


void tim3_init(timer_handle_t *tim_h, timer_oc_init_t *tim_ocinit, timer_clock_config_t *tim_clock){ tim3_pin_init();
tim_h->perh = GP16C2T1; tim_h->init.prescaler = 0; tim_h->init.mode = TIMER_CNT_MODE_UP; tim_h->init.period = (uint32_t)(255 - 1); tim_h->init.clk_div = TIMER_CLOCK_DIV1; tim_h->init.re_cnt = 0; ald_timer_pwm_init(tim_h);
tim_clock->source = TIMER_SRC_INTER; ald_timer_config_clock_source(tim_h, tim_clock);
tim_ocinit->oc_mode = TIMER_OC_MODE_PWM1; tim_ocinit->oc_polarity = TIMER_OC_POLARITY_HIGH; tim_ocinit->oc_fast_en = DISABLE; tim_ocinit->ocn_polarity = TIMER_OCN_POLARITY_HIGH; tim_ocinit->ocn_idle = TIMER_OCN_IDLE_RESET; tim_ocinit->oc_idle = TIMER_OC_IDLE_RESET;
tim_ocinit->pulse = (uint32_t)(255 * 20 / 100); ald_timer_oc_config_channel(tim_h, tim_ocinit, TIMER_CHANNEL_1);
tim_ocinit->pulse = (uint32_t)(255 * 50 / 100); ald_timer_oc_config_channel(tim_h, tim_ocinit, TIMER_CHANNEL_2);
ald_timer_oc_start(tim_h, TIMER_CHANNEL_1);
}


主程序實現了根據ADC採用進行PWM調節控制外部導光板的亮度:


value = adc_average(); sprintf((char *)tx_buf, "ADC_Value: %d \n", value); ald_uart_send(&h_uart, tx_buf, sizeof("ADC_Value: %d \n"), 1000);
duty = value/32.72; if(duty <= 1) duty = 1; ald_timer_pwm_set_duty(&tim3.tim_h, TIMER_CHANNEL_1, (uint16_t)duty);


2、利用東軟載波開發板進行DHT11、RTC和OLED顯示



依然是來自21ic論壇的用戶hbzjt2011,這個應用他選用了東軟載波的ESF0654 PDS。 【一】DHT11和RTC模塊部分代碼:
該模塊的驅動只要對原有SDK程序進行簡單移植即可,主要是對IO管腳的配置。






uint8_t dht11_read_data(uint8_t *temp, uint8_t *humi){ uint8_t buf[5] = {0}; uint8_t i;

dht11_reset();

if (dht11_check() == 0) { for (i = 0; i < 5; i++) buf[i] = dht11_read_byte();

if ((buf[0] + buf[1] + buf[2] + buf[3]) == buf[4]) { *humi = buf[0]; *temp = buf[2]; } } else return 1;

return 0;}

uint8_t dht11_init(void){ dht11_pin_init(); ald_delay_ms(100); dht11_reset();

return dht11_check();}


rtc.c


void rtc_init(void *rtc_param){ rtc_param_t *p_rtc = (rtc_param_t *)rtc_param;
p_rtc->init.asynch_pre_div = 0; p_rtc->init.synch_pre_div = 32767; p_rtc->init.hour_format = RTC_HOUR_FORMAT_24; p_rtc->init.output = RTC_OUTPUT_DISABLE; p_rtc->init.output_polarity = RTC_OUTPUT_POLARITY_HIGH; ald_rtc_init(&p_rtc->init);
p_rtc->time.hour = 18; p_rtc->time.minute = 31; p_rtc->time.second = 43; p_rtc->time.sub_sec = 123; p_rtc->date.day = 15; p_rtc->date.month = 12; p_rtc->date.year = 19; p_rtc->date.week = 7; ald_rtc_set_time(&p_rtc->time, RTC_FORMAT_DEC); ald_rtc_set_date(&p_rtc->date, RTC_FORMAT_DEC);
ald_rtc_interrupt_config(RTC_IT_SEC, ENABLE);}


【二】OLED顯示屏模塊:
這裡使用了OLED12864顯示液晶,採用模擬IIC進行驅動,便於程序的移植。


int main(){ ald_cmu_init(); ald_cmu_pll1_config(CMU_PLL1_INPUT_HOSC_3, CMU_PLL1_OUTPUT_48M); ald_cmu_clock_config(CMU_CLOCK_PLL1, 48000000);
memset(tx_buf, 0x55, sizeof(tx_buf));
uart_usb_init();
led_pin_init();
dht11_init();
OLED_Init();
rtc_init(&rtc_h);
while (1) {
cnt++; if(cnt == 5) { ald_gpio_write_pin(LED1_PORT, LED1_PIN, 0); ald_gpio_write_pin(LED2_PORT, LED2_PIN, 0); sprintf((char *)tx_buf, "LED ON "); OLED_P8x16Str(0u,4u,(uint8_t *)tx_buf); }else if(cnt == 10) { ald_gpio_write_pin(LED1_PORT, LED1_PIN, 1); ald_gpio_write_pin(LED2_PORT, LED2_PIN, 1); sprintf((char *)tx_buf, "LED OFF"); OLED_P8x16Str(0u,4u,(uint8_t *)tx_buf); cnt = 0; }
dht11_read_data(&temp, &humi); sprintf((char *)tx_buf, "Temp: %d Humi: %d \n", temp, humi); ald_uart_send(&h_uart, tx_buf, sizeof("Temp: %d Humi: %d \n"), 1000);
ald_rtc_get_time(&rtc_v, RTC_FORMAT_DEC); sprintf((char *)tx_buf, "Time:%02d-%02d-%02d", rtc_v.hour, rtc_v.minute, rtc_v.second); OLED_P8x16Str(0u,6u,(uint8_t *)tx_buf);
OLED_P8x16Str(0u,0u,(uint8_t *)"ES32 PDS BOARD"); sprintf((char *)tx_buf, "Temp:%d Humi:%d", temp, humi); OLED_P8x16Str(0u,2u,(uint8_t *)tx_buf); }}


市場上微控制器種類繁多,許多用戶開始從8位和16位轉而使用基於ARM Cortex-M的晶片產品。此次開發板評測活動,上海東軟載波微電子有限公司推出的是ES-PDS覆蓋全新的32位MCU--ES32F369x/ES32F366x/ES32F365x晶片。 ES32產品使用「原型開發系統」 (Prototype development system)是具有統一接口規範的一系列開發板。可支持客戶學習essemi ES32F系列32位MCU晶片和原形系統開發。 ES-PDS覆蓋ES32全系列的晶片,essemi每款晶片都有一款與之對應的開發板,通過ES-PDS可以用戶的開發以及學習做到支持。

除了免費用開發板

對於測評優秀的玩家

我們還奉上豐盛好禮

相關焦點

  • 如何使用MSP430單片機實現簡易計算器的設計
    本文介紹了一種基於MSP430單片機的簡易電子計算器設計。基於MSP430單片機的簡易電子計算器設計具有體積小、便於攜帶、應用方便、組成元器件少、製造成本低等優點。MSP430單片機具有的超低功耗、硬體浮點數運算等功能使得簡易電子計算器設計簡單、計算能力強,有著廣闊的發展前景。
  • 看看這塊性價比更高的開發板吧
    前言各位電子發燒友們是不是玩厭了土裡土氣的國產山寨開發板,畫煩了那麼多傳感器電路,又恨樹莓派的功能限制不太適合智能設備的研發?極客之選發現了一款兼顧速度、功能,價格的新款智能設備開發板——UDOO Neo。相信各位一定不會失望。
  • 開發板燒寫程序
    什麼是燒寫       燒寫就是將寫好的程序編譯好形成HEX或BIN文件後,將這個程序寫進單片機晶片的過程就叫燒寫
  • 從51系列單片機到Arduino UNO開發板
    總結網購可以找到開發板(5V或3.3V),價位普遍比發電機(380V)要合算很多。(小編買的時候是考慮好多個月……先把店家商品介紹的免費資料視頻看著學一學,然後感覺自己能按學習資料弄出來實驗,最後才下單。
  • 賦能開發者,促進3D 視覺生態:奧比中光ZoraP1開發板火爆預售
    ZoraP1開發板是奧比中光憑藉在3D視覺領域領先的技術積累、結合在主流3D視覺感知技術領域的豐富開發經驗,為3D視覺開發者社區量身打造的產品。  為了完善和檢驗該款開發板的實際使用適配性和通用性,奧比中光於8月5日開啟了3D視覺開發板邀測活動。與此同時,活動針對按時完成評測且測評報告內容合格者特別設置了論壇積分獎勵、獲得開發板終身使用權等諸多獎項。
  • 現在學單片機還有前途嗎
    而我從事的單片機行業,前幾年的培訓風還是吹起了浪,似於Linux驅動開發,安卓底層開發等,但是這陣風根本沒有持續多久就停止了。而單片機培訓根本就沒有颳起任何風,好像整個單片機行業都處在平流層,只有某寶上面充斥著各式各樣的開發板提醒著人們有一個培訓叫做單片機課程。那問題來了,是不是目前做Python,做前端的非常賺錢,而做單片機的連溫飽都還沒解決呢?
  • Arduino與樹莓派 哪款開發板更適合你
    Arduino和樹莓派(Raspberry Pi)都是電子創意設計的常用開發工具,那麼它們之間到底有什麼區別和特點呢?今天Z博士就跟大家分享一下Arduino和樹莓派的比較。Arduino是一款基於微控制器(單片機)的電子開發板,它可以運行一些相對比較簡單的應用程式。
  • 《60天學會STM32單片機線上培訓班》第二期開班倒計時2天
    單片機又稱單片微控制器,它是把一個計算機系統,包括cpu、ram、rom、定時/計數器和多種i/o接口集成到一個晶片上。由於單片機的種種優點和特性,其應用領域極其廣泛。單片機系統同樣也由硬體系統和軟體系統構成。 想知道更多關於單片機的知識嗎?
  • 國產RISC-V開發板RV-STAR初體驗
    RV-STAR開發板初體驗本文引用地址:http://www.eepw.com.cn/article/202006/414399.htm在芯來科技的公眾號上看到,他們出了一塊RISC-V的開發板,趕緊入手了一塊,雖然武漢現在疫情很嚴重
  • 新購買的imx6ull開發板如何使用:下載qt程序,進入Linux命令行系統
    大家好,這裡是義縣遊學電子科技.今天帶給您的是如何使用新購買的imx6ull開發板.新購買的開發板上電後會直接進入原子的演示程序,那如何才能顯示我們自己編譯好的qt程序呢.如何進入Linux命令行終端呢?這就是我們今天的主題了.
  • 如何在樹莓派4開發板上使用Windows 10 IoT Core?
    作為一款體積小巧的開發板,樹莓派已經提供了預配置的系統環境。但對於追求更豐富的功能體驗的用戶來說,Windows 10 IoT Core 顯然也是一個不錯的選擇。對於動手能力強的開發者來說,可通過 WoA Installer 在這款開發板上手動安裝 Windows10 IoT Core 作業系統。受硬體性能的限制,此前在樹莓派上運行 Windows 10 的體驗可能會讓不少人感到抓狂。
  • 基於Arduino UNO開發板無線連接伺服電機方案設計
    基於Arduino UNO開發板無線連接伺服電機方案設計 風箏 發表於 2021-01-09 11:47:36 在機器人中使用伺服電機進行精確控制很常見。
  • 現在還有必要學習51單片機了嗎
    「現在都是什麼年代了,你還在學單片機?早就該學嵌入式系統了,Linux和FPGA了。什麼,你學的還是51單片機,這個單片機可能比你老爸年紀還大,還學它幹嘛?你這不是1949年參加Guo軍,1912年入宮做『大內總管』嗎?」。
  • 電工必學:PLC與單片機的本質區別是什麼?
    PLC與單片機的本質區別是什麼? PLC與單片機的差別是: 1、PLC是應用單片機構成的比較成熟的控制系統,是已經調試成熟穩定的單片機應用系統的產品。有較強的通用性。
  • 邀您嘗鮮 NUCLEO開發板推出32引腳系列
    申請時間:2015年12月3日-2015年12月18日立即前往ARM中文社區,回答有關前100名正確回答所有問題的網友將獲得開發板。註:獲得開發板的用戶需在2016年1月31日前於ARM中文社區分享使用報告。最先分享的前10名將加獲ARM送出的神秘大禮。
  • 【DIY】使用了單片機的簡易廚房定時器製作
    作為電子愛好者,筆者熱衷製作,用單片機做一個簡單有趣的廚房定時器,既解決了實際的問題,又滿足了愛好實踐的願望,於是就有了本文的這個製作。這個電路十分簡單,可以使用洞洞板直接焊接電路,製作用不了半天,無需調節,非常適合初學者練手製作。
  • 金腳不是腳——開發板銅柱支腳的問題
    說起開發板的細節問題還能舉出很多的例子。最讓我無法接受的還不是開關帽,而是開發板的支撐腳。我們通常所能看到的開發板有2種,一種是帶有金屬箱或塑料箱的「實驗箱」,這種算是開關板界的「高級貨」,PCB板被嵌入到配套尺寸的箱子裡,箱子背面有專用的塑料支點,不會劃傷桌面,也非常美觀。另一種則是PCB裸板,這種開發板追求簡潔、實用和低成本。
  • Arduino是什麼樣的單片機?
    閱讀一個關於「什麼是Arduino的?」和「為什麼你會想使用它?」的介紹。1.2. What is Arduino?Arduino是一個基於易於使用的硬體和軟體的開源電子平臺。 Arduino開發板能夠讀取輸入(光線傳感器,用手指按按鈕或Twitter消息)並將其轉換為輸出(啟動電動機,打開LED、在線發布內容)。您可以通過向開發板上的微控制器發送一組指令來告訴它該怎麼做。
  • 大哥,STM32單片機啟動代碼你不會不知道吧!
    想要深入學習STM32單片機,就必須要去研究STM32單片機的啟動代碼,否則你就無法從整體框架上去了解它,所以STM32啟動代碼早晚都是要研究學習的,避不掉的坑。啟動代碼裡主要是由彙編和偽指令構成的,下面我們從頭到尾來理一遍這些神秘的代碼究竟是什麼含義。