本文介紹了在STM32下的IIC的基本使用方法,通過(guò)對(duì)板載具備IIC接口EEPROM的讀寫(xiě),完成對(duì)IIC驅(qū)動(dòng)程序的測(cè)試。
硬件平臺(tái):STM32F107VCT6開(kāi)發(fā)板
軟件平臺(tái):STM32Cube MX + MDK5.22
1. 進(jìn)行STM32Cube MX的配置
配置PB6和PB7為輸出模式,同時(shí)配置了USART1進(jìn)行串口調(diào)試使用。然后生成工程。
2. 打開(kāi)工程,可以看到GPIO的初始化狀態(tài)
3. 模擬IIC驅(qū)動(dòng)程序源文件代碼
/**
* @file iic_dup.c
* @brief IIC上層程序
* @par date version author remarks
* 2016-03-21 v1.0 zbt 初次創(chuàng)建
*
*/
/** 頭文件包含區(qū) ------------------------------------------------ */
#include "iic_dup.h"
/** 私有宏(類型定義) -------------------------------------------- */
#define IIC1_SCL(pin_status) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, pin_status);
#define IIC1_SDA(pin_status) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, pin_status);
#define IIC1_SCL_IS_HIGH() (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_6) != GPIO_PIN_RESET)
#define IIC1_SDA_IS_HIGH() (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_7) != GPIO_PIN_RESET)
/** 私有變量 --------------------------------------------------- */
/** 外部變量 --------------------------------------------------- */
/** 私有函數(shù)原型 ----------------------------------------------- */
static void iic_delay(void);
/** 公有函數(shù) --------------------------------------------------- */
/**
* @brief IIC啟動(dòng)
* @param None
* @retval None
* @note 當(dāng)SCL處于高電平狀態(tài)時(shí),SDA出現(xiàn)一個(gè)下降沿
即產(chǎn)生IIC啟動(dòng)信號(hào)
*/
void iic_start(void)
{
IIC1_SCL(GPIO_PIN_SET);
/** SDA產(chǎn)生一個(gè)下降沿 */
IIC1_SDA(GPIO_PIN_SET);
iic_delay();
IIC1_SDA(GPIO_PIN_RESET);
iic_delay();
IIC1_SCL(GPIO_PIN_RESET); /**< 拉低準(zhǔn)備發(fā)送數(shù)據(jù) */
iic_delay();
}
/**
* @brief IIC停止
* @param None
* @retval None
* @note 當(dāng)SCL處于高電平狀態(tài)時(shí),SDA出現(xiàn)一個(gè)上升沿
即產(chǎn)生IIC停止信號(hào)
*/
void iic_stop(void)
{
IIC1_SCL(GPIO_PIN_RESET);
iic_delay();
/** SDA產(chǎn)生一個(gè)上升沿 */
IIC1_SDA(GPIO_PIN_RESET);
iic_delay();
IIC1_SCL(GPIO_PIN_SET);
iic_delay();
IIC1_SDA(GPIO_PIN_SET);
iic_delay();
}
/**
* @brief IIC發(fā)送1byte數(shù)據(jù)
* @param None
* @retval None
* @note
*/
void iic_sendbyte(uint8_t byte)
{
uint8_t i;
/** 發(fā)送一個(gè)字節(jié)的高7位 */
for (i = 0; i < 8; i++)
{
if (byte & 0x80)
{
IIC1_SDA(GPIO_PIN_SET);
}
else
{
IIC1_SDA(GPIO_PIN_RESET);
}
iic_delay();
IIC1_SCL(GPIO_PIN_SET);
iic_delay();
IIC1_SCL(GPIO_PIN_RESET)
if (i == 7)
{
IIC1_SDA(GPIO_PIN_SET);
}
byte <<= 1;
iic_delay();
}
}
/**
* @brief IIC讀取1byte數(shù)據(jù)
* @param None
* @retval None
* @note
*/
uint8_t iic_readbyte(void)
{
uint8_t i;
uint8_t recv_value = 0;
IIC1_SDA(GPIO_PIN_SET);
iic_delay();
for (i = 0; i < 8; i++)
{
IIC1_SCL(GPIO_PIN_SET);
iic_delay();
recv_value <<= 1;
if (IIC1_SDA_IS_HIGH())
{
recv_value |= 0x01;
}
else
{
recv_value &= ~0x01;
}
iic_delay();
IIC1_SCL(GPIO_PIN_RESET);
}
return recv_value;
}
/**
* @brief IIC等待應(yīng)答信號(hào)
* @param None
* @retval ack_status: 應(yīng)答狀態(tài),0表示應(yīng)答,1表示設(shè)備無(wú)響應(yīng)
*/
uint8_t iic_wait_ack(void)
{
uint8_t ack_status = 0;
/** 在等待應(yīng)答信號(hào)之前,要釋放總線,即將SDA置位 */
IIC1_SDA(GPIO_PIN_SET);
iic_delay();
IIC1_SCL(GPIO_PIN_SET);
iic_delay();
if (IIC1_SDA_IS_HIGH())
{
ack_status = 1;
iic_stop();
}
else
{
ack_status = 0;
}
IIC1_SCL(GPIO_PIN_RESET);
iic_delay();
return ack_status;
}
/**
* @brief 主機(jī)(主控制器)產(chǎn)生應(yīng)答信號(hào)
* @param None
* @retval None
*/
void iic_ack(void)
{
IIC1_SDA(GPIO_PIN_RESET);
iic_delay();
IIC1_SCL(GPIO_PIN_SET);
iic_delay();
IIC1_SCL(GPIO_PIN_RESET);
iic_delay();
IIC1_SDA(GPIO_PIN_SET);
}
/**
* @brief 主機(jī)(主控制器)產(chǎn)生不應(yīng)答信號(hào)
* @param None
* @retval None
*/
void iic_nack(void)
{
IIC1_SDA(GPIO_PIN_SET);
iic_delay();
IIC1_SCL(GPIO_PIN_SET);
iic_delay();
IIC1_SCL(GPIO_PIN_RESET);
iic_delay();
}
/**
* @brief 檢測(cè)IIC總線上的設(shè)備狀態(tài)
* @param device_addr: 從機(jī)設(shè)備地址
* @retval ack_status: 0 (正常)or 1(異常)
* @note 主機(jī)發(fā)送設(shè)備地址等待從機(jī)應(yīng)答,若有從機(jī)正確的應(yīng)答信號(hào)
則表明IIC總線上掛接了設(shè)備,否則表示IIC總線上未檢測(cè)到
設(shè)備
*/
uint8_t iic_check_device_status(uint8_t device_addr)
{
uint8_t ack_status;
if (IIC1_SCL_IS_HIGH() && IIC1_SDA_IS_HIGH())
{
iic_start();
iic_sendbyte(device_addr | IIC_WRITE);
ack_status = iic_wait_ack();
iic_stop();
return ack_status;
}
return 1;
}
/** 私有函數(shù) --------------------------------------------------- */
/**
* @brief 用于模擬IIC時(shí)的簡(jiǎn)單延時(shí)
* @param None
* @retval None
*/
static void iic_delay(void)
{
uint8_t i = 0;
uint8_t delay = 5;
while (delay--)
{
i = 10;
while (i--);
}
}
4. AT24C02部分驅(qū)動(dòng)代碼
/**
* @file at24c02.c
* @brief at24c02驅(qū)動(dòng)程序
* @par date version author remarks
* 2016-03-21 v1.0 zbt 初次創(chuàng)建
*
*/
/** 頭文件包含區(qū) ------------------------------------------------ */
#include "at24c02.h"
#include "iic_dup.h"
/** 私有宏(類型定義) -------------------------------------------- */
#define AT24C02_DEVICE_ADDR 0xA0
#define AT24C02_PAGE_SIZE 8
#define AT24C02_MEM_SIZE 256
#define AT24C02_ADDR_BYTE 1
/** 私有變量 --------------------------------------------------- */
uint8_t test_buffer[AT24C02_MEM_SIZE];
/** 外部變量 --------------------------------------------------- */
/** 私有函數(shù)原型 ----------------------------------------------- */
//static void AT24C02_ack(void);
static void AT24C02_error_handle(void);
static void AT24C02_read_test(void);
static void AT24C02_write_test(void);
static void AT24C02_erase_test(void);
/** 公有函數(shù) --------------------------------------------------- */
/**
* @brief AT24C02與主控制器的IIC通訊測(cè)試代碼
* @param None
* @retval None
*/
void AT24C02_iic_test(void)
{
iic_stop(); /**< 必須先復(fù)位IIC總線上的設(shè)備到待機(jī)模式 */
HAL_Delay(10);
/** 檢測(cè)總線上是否掛接了IIC設(shè)備(此處為AT24C02) */
if (iic_check_device_status(AT24C02_DEVICE_ADDR) == 0)
{
printf("iic device exists\n");
}
else
{
printf("no iic device exists\n");
}
AT24C02_write_test();
HAL_Delay(5);
AT24C02_read_test();
HAL_Delay(5);
AT24C02_erase_test();
}
/**
* @brief 從AT24C02中讀取數(shù)據(jù)
* @param read_data: 讀取到的數(shù)據(jù)
* @param start_addr: 讀取數(shù)據(jù)的起始地址
* @param data_length: 數(shù)據(jù)的長(zhǎng)度
* @retval None
*/
void AT24C02_read_data(uint8_t *read_data, uint16_t start_addr, uint16_t data_length)
{
uint16_t i;
iic_start();
iic_sendbyte(AT24C02_DEVICE_ADDR | IIC_WRITE);
// AT24C02_ack();
if (iic_wait_ack() != 0)
{
AT24C02_error_handle();
printf("first read error\r\n");
}
if (AT24C02_ADDR_BYTE == 1)
{
iic_sendbyte((uint8_t)start_addr & 0xff);
// AT24C02_ack();
if (iic_wait_ack() != 0)
{
AT24C02_error_handle();
printf("addr byte error\r\n");
}
}
iic_start();
iic_sendbyte(AT24C02_DEVICE_ADDR | IIC_READ);
// AT24C02_ack();
if (iic_wait_ack() != 0)
{
AT24C02_error_handle();
printf("read data error\r\n");
}
for (i = 0; i < data_length; i++)
{
read_data[i] = iic_readbyte();
if (i != data_length - 1)
{
iic_ack(); /**< 讀完非最后一個(gè)字節(jié)后, 產(chǎn)生應(yīng)答信號(hào) */
}
else
{
iic_nack(); /**< 最后一個(gè)字節(jié)讀完后 產(chǎn)生非應(yīng)答信號(hào) */
}
// printf("read data is %d\n", read_data[i]); /**< 調(diào)試代碼 */
}
iic_stop();
}
/**
* @brief 通過(guò)IIC向AT24C02寫(xiě)數(shù)據(jù)
* @param write_data: 要寫(xiě)入AT24C02的數(shù)據(jù)指針
* @param start_addr: 要寫(xiě)入AT24C02的起始地址
* @param data_length: 要寫(xiě)入AT24C02的數(shù)據(jù)長(zhǎng)度
* @retval None
*/
void AT24C02_write_data(uint8_t *write_data, uint16_t start_addr, uint16_t data_length)
{
uint16_t i, j;
uint16_t start_addr_dup;
start_addr_dup = start_addr;
for (i = 0; i < data_length; i++)
{
if ((i == 0) || (start_addr_dup & (AT24C02_PAGE_SIZE - 1)) == 0)
{
iic_stop();
for (j = 0; j < 2000; j++)
{
iic_start();
iic_sendbyte(AT24C02_DEVICE_ADDR | IIC_WRITE);
if (iic_wait_ack() == 0)
{
break;
}
}
if (j >= 2000)
{
printf("j = 1000\r\n");
AT24C02_error_handle();
}
if (AT24C02_ADDR_BYTE == 1)
{
iic_sendbyte((uint8_t)start_addr_dup & 0xff);
// AT24C02_ack();
if (iic_wait_ack() != 0)
{
AT24C02_error_handle();
printf("addr_byte wrong\r\n");
}
}
}
iic_sendbyte(write_data[i]);
// AT24C02_ack();
if (iic_wait_ack() != 0)
{
AT24C02_error_handle();
printf("write failed\r\n");
}
// printf("write_data is %d \n", write_data[i]); /**< 調(diào)試代碼 */
start_addr_dup++;
}
iic_stop();
}
/** 私有函數(shù) --------------------------------------------------- */
/** 以下為測(cè)試用程序 ------------------------------------------- */
/**
* @brief AT24C02讀取數(shù)據(jù)測(cè)試
* @param None
* @retval None
*/
static void AT24C02_read_test(void)
{
uint16_t i;
AT24C02_read_data(test_buffer, 0, (AT24C02_MEM_SIZE % 10));
printf("read data is:\n");
for (i = 0; i < (AT24C02_MEM_SIZE % 10); i++)
{
printf("%d ", test_buffer[i]);
}
printf("\r\nread test ok\r\n");
}
/**
* @brief AT24C02寫(xiě)數(shù)據(jù)測(cè)試
* @param None
* @retval None
*/
static void AT24C02_write_test(void)
{
uint16_t i;
for (i = 0; i < (AT24C02_MEM_SIZE % 10); i++)
{
test_buffer[i] = i;
}
AT24C02_write_data(test_buffer, 0, (AT24C02_MEM_SIZE % 10));
printf("write data is:\n");
for (i = 0; i < (AT24C02_MEM_SIZE % 10); i++)
{
printf("%d ", test_buffer[i]);
}
printf("\r\nwrite test ok\r\n");
}
/**
* @brief AT24C02擦除數(shù)據(jù)測(cè)試
* @param None
* @retval None
*/
static void AT24C02_erase_test(void)
{
uint16_t i;
for (i = 0; i < (AT24C02_MEM_SIZE % 10); i++)
{
test_buffer[i] = 0xff;
}
AT24C02_write_data(test_buffer, 0, (AT24C02_MEM_SIZE % 10));
printf("erase value is: \n");
for (i = 0; i < (AT24C02_MEM_SIZE % 10); i++)
{
printf("%d ", test_buffer[i]);
}
printf("\r\nerase test ok\r\n");
}
/** 以上為測(cè)試用程序 ------------------------------------------- */
/**
* @brief AT24C02應(yīng)答錯(cuò)誤處理程序
* @param None
* @retval None
*/
static void AT24C02_error_handle(void)
{
iic_stop();
// printf("At24C02 read failed\r\n"); /**< 調(diào)試用 */
}
//static void AT24C02_ack(void)
//{
// if (iic_wait_ack() != 0)
// {
// AT24C02_error_handle();
// }
//}
5. 在主函數(shù)中添加 AT24C02_iic_test(); 進(jìn)行讀寫(xiě)測(cè)試成功。
上一篇:STM32 硬件I2C中斷實(shí)現(xiàn)
下一篇:LPC1114時(shí)鐘學(xué)習(xí)
推薦閱讀
史海拾趣
技術(shù)創(chuàng)新是中電熊貓持續(xù)發(fā)展的關(guān)鍵。公司不斷深化技術(shù)改革,加大研發(fā)投入,推動(dòng)產(chǎn)業(yè)升級(jí)。例如,在液晶面板生產(chǎn)線上,中電熊貓采用了世界一流的技術(shù)和設(shè)備,不僅提高了屏幕分辨率和良品率,還降低了生產(chǎn)成本。此外,中電熊貓還積極參與國(guó)家重大科研項(xiàng)目和行業(yè)標(biāo)準(zhǔn)制定工作,為行業(yè)發(fā)展做出了積極貢獻(xiàn)。
喜美克斯(Cvilux)公司自創(chuàng)立之初,就以其對(duì)電子技術(shù)的深刻理解和創(chuàng)新精神在行業(yè)中嶄露頭角。公司的創(chuàng)始人是一位電子工程領(lǐng)域的資深專家,他帶領(lǐng)著一支充滿激情的年輕團(tuán)隊(duì),針對(duì)當(dāng)時(shí)市場(chǎng)上電子產(chǎn)品的一些痛點(diǎn),開(kāi)始研發(fā)具有自主知識(shí)產(chǎn)權(quán)的新技術(shù)。經(jīng)過(guò)數(shù)月的努力,他們成功開(kāi)發(fā)出了一款具有高效能、低功耗特點(diǎn)的電子芯片,這一創(chuàng)新技術(shù)迅速獲得了市場(chǎng)的認(rèn)可,為喜美克斯公司的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
人才是企業(yè)發(fā)展的核心驅(qū)動(dòng)力。Excelsys公司高度重視人才培養(yǎng)和團(tuán)隊(duì)建設(shè)。公司建立了完善的人才培養(yǎng)機(jī)制,為員工提供系統(tǒng)的培訓(xùn)和學(xué)習(xí)機(jī)會(huì);同時(shí),公司還注重團(tuán)隊(duì)文化的建設(shè),營(yíng)造積極向上、團(tuán)結(jié)協(xié)作的工作氛圍。這些措施為公司的持續(xù)發(fā)展提供了有力的人才保障。
APSA公司在創(chuàng)業(yè)初期,專注于電子行業(yè)中某一特定領(lǐng)域的技術(shù)研發(fā)。通過(guò)團(tuán)隊(duì)的不懈努力和持續(xù)創(chuàng)新,公司成功開(kāi)發(fā)出一款具有競(jìng)爭(zhēng)力的產(chǎn)品,填補(bǔ)了市場(chǎng)空白。這一技術(shù)突破不僅為APSA公司贏得了首批客戶,也為公司的后續(xù)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
DAESAN公司以其獨(dú)特的設(shè)備回收與再利用技術(shù),在電子行業(yè)中嶄露頭角。起初,公司只是一個(gè)小型的設(shè)備拆卸公司,但在一次偶然的機(jī)會(huì)中,他們發(fā)現(xiàn)許多被廢棄的電子設(shè)備中,仍然含有大量可再利用的零部件和材料。于是,DAESAN公司開(kāi)始專注于電子設(shè)備的回收和再利用,通過(guò)精細(xì)的拆卸和修復(fù)技術(shù),將廢舊設(shè)備轉(zhuǎn)化為新的生產(chǎn)資源。這一舉措不僅為公司帶來(lái)了可觀的利潤(rùn),也為環(huán)保事業(yè)做出了貢獻(xiàn)。
隨著國(guó)內(nèi)市場(chǎng)的日益飽和,明波通信開(kāi)始將目光投向全球市場(chǎng)。公司先后在日本東京和江蘇常州設(shè)立了子公司,通過(guò)技術(shù)合作和市場(chǎng)拓展,進(jìn)一步鞏固了公司在全球通信領(lǐng)域的地位。同時(shí),明波通信也積極參與國(guó)際技術(shù)交流和合作,不斷提升自身的技術(shù)水平和創(chuàng)新能力。這一系列的國(guó)際化戰(zhàn)略舉措,為明波通信的未來(lái)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
以上五個(gè)故事都是基于明波通信在電子行業(yè)中的發(fā)展歷程和公開(kāi)資料進(jìn)行的概括性描述。雖然無(wú)法涵蓋所有細(xì)節(jié)和具體事件,但希望能夠展現(xiàn)出明波通信在創(chuàng)業(yè)、技術(shù)創(chuàng)新、市場(chǎng)拓展和國(guó)際化等方面的努力和成就。
電工的職業(yè)病, 說(shuō)說(shuō)看, 你有嗎? 看見(jiàn)紅綠燈你是不是想到動(dòng)態(tài)顯示和靜態(tài)顯示? 看見(jiàn)霓虹燈你是不是想到流水燈控制程序? 看見(jiàn)高檔車的剎車燈你是不是想到那是LED做的? 看見(jiàn)路邊的電子警察你是不是想到多普勒效應(yīng)? 看見(jiàn)路邊的變壓器你是不是想到了初極和次極? 看見(jiàn)家里的白 ...… 查看全部問(wèn)答∨ |
|
汽車LED燈 14.5V 400LM 用18個(gè)0.5W燈做 電壓:14.5VDC 光通量:400LM LED:0.5W白光 LED:18PCS 誰(shuí)有方案類的IC提供的。… 查看全部問(wèn)答∨ |
感謝論壇好友對(duì)我第一個(gè)問(wèn)題回答。 問(wèn)題: VIVI啟動(dòng)后,我根據(jù)其手冊(cè)上load的用法,做了如下事情: load ram 0x30008000 0x6000 x 發(fā)送一個(gè)system.bin(由arm fromELF生成的 plain binnary文件) 我的思路是不用從FLASH中加載到RAM中,我自己把 ...… 查看全部問(wèn)答∨ |
eboot系列問(wèn)題--------------請(qǐng)教EBOOT.BIB和CONFIG.BIB中的內(nèi)容! config.bib: ; 8000.0000 -+ ; | Bootloader Stack (64KB) ; 8001.0000 -+ ; | Bootloader RAM (64KB) ; 8002.0000 -+ ; &nb ...… 查看全部問(wèn)答∨ |
|
小生想知道內(nèi)核對(duì)象都有什么樣的區(qū)別,如使用Winobj看到的: Arcname, basenamedobjects, callback, device 這些里面的內(nèi)核對(duì)象都有什么區(qū)別啊??要全面的,比較詳細(xì)的!語(yǔ)言不限~~… 查看全部問(wèn)答∨ |
求高手指點(diǎn)為什么只能計(jì)數(shù)低八位 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity clock_10Hz isport(reset:in std_logic;clk_in:in std_logic;clk_out: out std_logic_vector(21 downto 0));end clock_10Hz ; architecture behavioral of cl ...… 查看全部問(wèn)答∨ |
華禹工控及移動(dòng)微平臺(tái)介紹 華禹工控原是深圳市華禹高科技有限公司的一個(gè)行業(yè)應(yīng)用事業(yè)部,從08年底獨(dú)立運(yùn)作,11年4月正式獨(dú)立于華禹高,注冊(cè)公司為深圳市華禹工控科技有限公司,獨(dú)立地址運(yùn)作辦公。 華禹工控的獨(dú)立轉(zhuǎn)型做行業(yè)應(yīng)用,也算是深 ...… 查看全部問(wèn)答∨ |
我采用的是ICCAVR7.22進(jìn)行編譯,AVRStudio4.18進(jìn)行調(diào)試,仿真器為JTAG_MKII 編寫(xiě)的程序不是很復(fù)雜,包括串口中斷、AD中斷和定時(shí)器中斷在硬件仿真時(shí)出現(xiàn)問(wèn)題 計(jì)算乘法時(shí),計(jì)算數(shù)據(jù)錯(cuò)誤,如下: double A double B unsigned int C C=(unsinged ...… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計(jì)
- 小型傾轉(zhuǎn)旋翼機(jī)的無(wú)刷直流電機(jī)驅(qū)動(dòng)器設(shè)計(jì)
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計(jì)
- 基于GPS自動(dòng)授時(shí)的無(wú)線智能控制器的設(shè)計(jì)
- 基于PTR2000的無(wú)線氣象信息采集系統(tǒng)設(shè)計(jì)
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無(wú)人飛行器機(jī)載穩(wěn)定云臺(tái)控制系統(tǒng)的設(shè)計(jì)
- 匠芯創(chuàng)推出面向具身智能高性能實(shí)時(shí)處理器M7000
- 宇稱電子發(fā)布8通道多閾值A(chǔ)SIC芯片:重構(gòu)激光雷達(dá)產(chǎn)業(yè)格局,開(kāi)啟“ASIC平權(quán)”時(shí)代
- 三星SDI與LGES將在美國(guó)設(shè)置磷酸鐵鋰電池生產(chǎn)線
- 福特汽車公司申請(qǐng)新專利 或?qū)⒋钶d車輛噪音控制系統(tǒng)
- 福特汽車申請(qǐng)新專利 福特Pro Power Onboard或新增安全模式
- 華為乾崑如何驅(qū)動(dòng)中國(guó)智能汽車產(chǎn)業(yè)共創(chuàng)?
- 激光雷達(dá)VS純視覺(jué),小米小鵬隔空交鋒
- 機(jī)器人實(shí)現(xiàn)空中變形 飛行與地面行駛模式無(wú)縫切換
- -35℃直充技術(shù)顛覆革新,邢東鋰電引領(lǐng)低溫電池進(jìn)入“直充時(shí)代”!
- 硬核解讀:人形機(jī)器人跑“半馬”映射出哪些產(chǎn)業(yè)問(wèn)題
- V2X 連接器產(chǎn)品綜述
- 4月25日上午10:00-11:30 ADI與您相約 TOF (Time Of Flight) 技術(shù)介紹及產(chǎn)品應(yīng)用 有獎(jiǎng)直播
- 我為TI M4開(kāi)發(fā)板Hanker試用狂!
- 購(gòu)買TI store MSP432P401R LaunchPad 曬單就送禮!
- 感謝有你,感謝有禮!
- 《美光2022臺(tái)北國(guó)際電腦展主題演講精選:數(shù)據(jù)中心專輯》,關(guān)注、評(píng)論贏固態(tài)硬盤等好禮!
- 有獎(jiǎng)直播報(bào)名:英飛凌智能電機(jī)驅(qū)動(dòng)方案
- 答疑專場(chǎng):模擬世界的最重要構(gòu)成——信號(hào)鏈與電源
- 報(bào)名2019年ST全國(guó)巡回研討會(huì),贏三重好禮
- 單片機(jī)外部RAM的數(shù)據(jù)傳送
- 傳微軟同意收購(gòu)代碼托管平臺(tái)GitHub:本周一將公布
- 12000次超長(zhǎng)循環(huán)壽命!寧德時(shí)代新型鋰電池儲(chǔ)能技術(shù)通過(guò)驗(yàn)收
- Cortex-M3異常中斷及向量表定義
- Entegris COO:半導(dǎo)體已進(jìn)入全球化時(shí)代 愿與中國(guó)廠商加強(qiáng)合作
- MWC2018展出的紅米note 5將在3月16日與大家見(jiàn)面
- 蘋果大波產(chǎn)品來(lái)襲 我們一起看看那些傳說(shuō)中的新品
- 澳洲也對(duì)華為say no了 華為:不公平
- 小米冷對(duì)A+H股上市傳言 IPO綠色通道點(diǎn)燃市場(chǎng)想象力
- 小米或?qū)⒃贏股和港股同時(shí)上市 雷軍或?qū)⒊芍袊?guó)首富
- IPTV催使運(yùn)營(yíng)商改造城域網(wǎng)
- 常用的幾種集成電路的檢測(cè)方法
- RT-Thread 1.2.0 Alpha 版本發(fā)布
- LPCXPresso IDE可以進(jìn)行虛擬仿真嗎?新人新帖多多關(guān)照。
- 【樹(shù)莓派4B測(cè)評(píng)】+環(huán)境搭建,openssl庫(kù)使用
- 問(wèn)一個(gè)系統(tǒng)時(shí)鐘輸出的問(wèn)題
- 四種LED路燈的電源設(shè)計(jì)方案
- 求推薦:一本好的pads95入門書(shū)籍(最好有配套視頻) !
- 串口12864的STM32F072程序
- 為什么他那個(gè)AD轉(zhuǎn)換不用乘上分辨率啊