国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于STM32的pca9535、pca9555IO擴展板開發(fā)

這篇具有很好參考價值的文章主要介紹了基于STM32的pca9535、pca9555IO擴展板開發(fā)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

之前使用的pca9535由于芯片本身有些中斷問題和采購問題,目前換成了pca9555的IO擴展芯片來使用,本文章適用于這兩款芯片。


一、開發(fā)環(huán)境

編譯器: keil5
工程庫: HAL庫
芯片型號:STM32F072

二、開發(fā)流程

開發(fā)手冊解析及使用

pca9535和pca9555基本一樣,這里我就主要說9535的手冊了。
手冊下載地址網(wǎng)上有很多,直接去百度搜索就行了。

1、芯片I2C地址如何確定
9555中斷,stm32,單片機,arm,mcu,物聯(lián)網(wǎng)
如圖,A2、A1、A0和其他5位共同決定了I2C的地址,其中A2、A1、A0一般硬件直接接地,在配置地址的時候需要確認這3位的狀態(tài)。我這里這3位是0。所以I2C地址是0x40。

1、芯片寄存器地址
9555中斷,stm32,單片機,arm,mcu,物聯(lián)網(wǎng)
命令字節(jié)要在寫入的時候跟隨地址字節(jié)的第一個字節(jié)一起傳到芯片內(nèi),分別是:
輸入端口 0 → 0
輸入端口 1 → 1
輸出端口 0 → 2
輸出端口 1 → 3
極性反轉(zhuǎn)端口 0 → 4
極性反轉(zhuǎn)端口 1 → 5
配置端口 0 → 6
配置端口 1 → 7

每個端口對應的命令字節(jié)不同,可以根據(jù)自己的需求去配置這些端口,我這里就簡單的配置IO為輸入輸出模式。

9555中斷,stm32,單片機,arm,mcu,物聯(lián)網(wǎng)
上圖說明要配置成輸出模式需要將配置寄存器(6和7寄存器)的相應位置成0,要配置成輸入模式要將相應位置1。

// PCA9535命令宏
#define  PCA9535_INPUT_PORT0_REG        0
#define  PCA9535_INPUT_PORT1_REG        1
#define  PCA9535_OUTPUT_PORT0_REG       2
#define  PCA9535_OUTPUT_PORT1_REG       3
#define  PCA9535_INVERSION_PORT0_REG    4
#define  PCA9535_INVERSION_PORT1_REG    5
#define  PCA9535_CONFIG_PORT0_REG       6
#define  PCA9535_CONFIG_PORT1_REG       7
#define  PCA9535_CONFIG_VAL0      0xE0
#define  PCA9535_CONFIG_VAL1      0xFB 

uint8_t Pca9535_Init(void)
{

	uint8_t w_data[] = {0x00, 0x00, 0x00};
	uint8_t r_data[] = {0x00, 0x00};

	// 上電先讀取一次清除中斷標志
	memset(w_data, 0, sizeof(w_data));
	
	pca9535_read(PCA9535_INPUT_PORT0_REG, r_data, 2);
	
	// 配置PCA9535 端口,即寫配置寄存器,數(shù)據(jù)格式為:地址 + CMD + 8 input + 8 output
	w_data[0] = PCA9535_CONFIG_PORT0_REG;   //config_port0 寄存器
	w_data[1] = PCA9535_CONFIG_VAL0;
	w_data[2] = PCA9535_CONFIG_VAL1;
	if (HAL_OK != pca9535_write(w_data, sizeof(w_data)))
	{
		pca9535_write(w_data, sizeof(w_data));
		pr_debug(0x03,"pca9535_write error\n");
		return 0;
	}
   	return 1;
}

IO口模式配置成功后需要進行輸入的讀取和輸出的設置。

tips:在進行初始化前,一定要先讀取一遍寄存器再進行寫寄存器。原因是需要先清除中斷。

如上我就是把P07,P06,P05配置成了輸入模式,P04,P03,P02,P01,P00配置成了輸出模式;把P1中除了P12配置成了輸出其余都配置成了輸入模式。

IO輸出設置:

uint8_t io_out(void)
{
		uint8_t data[] = {0x00, 0x00};		
		data[0] = PCA9535_OUTPUT_PORT0_REG;   
		data[1] = 0xfe; 
		if (HAL_OK != pca9535_write(led_data, sizeof(led_data)))
		{
			printf("pca9535 write error\n");
			return 0;
		}
		return 1;
}

如上則是把P00設置成了低電平,其余都是P0口都是高電平。

進行寫寄存器的時候直接寫即可:

HAL_StatusTypeDef pca9535_write(uint8_t *pData, uint16_t size)
{
	return (HAL_I2C_Master_Transmit(&hi2c1, PCA9535_ADDR, pData, size, 1000));
}

在進行讀寄存器的時候需要看一下官方的iic時序,他是發(fā)了command + data0 +data1后再發(fā)送的stop命令。
我這里調(diào)用的hal庫進行讀寄存器,則需要改一下官方的 HAL_I2C_Master_Receive 函數(shù)后才能調(diào)用。

pca9535_read()讀取的代碼比較多,我這里就不上傳了。需要的私信我即可。


總結(jié)

pca9535這款芯片里面還是有些小坑的,在進行stm32開發(fā)時要注意中斷問題,和iic讀取問題,如若用成中斷觸發(fā),還需要添加以下錯誤機制,在我使用的時候還是發(fā)生過偶爾芯片初始化不正確,或者使用中讀寄存器值不對的狀態(tài)。文章來源地址http://www.zghlxwxcb.cn/news/detail-671923.html

創(chuàng)作不易,請大佬們點個贊!
有問題請留言討論!

到了這里,關于基于STM32的pca9535、pca9555IO擴展板開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【雕爺學編程】Arduino動手做(133)---LCD1602擴展板模塊

    【雕爺學編程】Arduino動手做(133)---LCD1602擴展板模塊

    7款傳感器與執(zhí)行器的提法,在網(wǎng)絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里準備逐一動手嘗試系列實驗,不管成功(程序走通)與

    2024年02月11日
    瀏覽(19)
  • 【雕爺學編程】Arduino動手做(174)---Sensor Shield V5.0傳感器擴展板

    【雕爺學編程】Arduino動手做(174)---Sensor Shield V5.0傳感器擴展板

    37款傳感器與執(zhí)行器的提法,在網(wǎng)絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里準備逐一動手嘗試系列實驗,不管成功(程序走通)

    2024年02月15日
    瀏覽(31)
  • 樹莓派POE以太網(wǎng)供電擴展板模塊可接風扇支持802.3af支持3B+/4B

    這是一款適用于 Raspberry Pi 3B+/4B 的以太網(wǎng)供電 (PoE) 迷你擴展板,支持 IEEE 802.3af 網(wǎng)絡標準。如果已有支持 IEEE 802.3af 網(wǎng)絡標準的 PoE 路由器或交換機,搭配本擴展板,只需一根網(wǎng)線接入即可讓樹莓派實現(xiàn)聯(lián)網(wǎng)和供電。 []? 適用于 Raspberry Pi 3B+/4B,可搭配樹莓派官方外殼一起使用

    2024年02月16日
    瀏覽(25)
  • 微信小程序+UDP+wifi8266+l293d擴展板+Arduino uno遙控小車

    微信小程序+UDP+wifi8266+l293d擴展板+Arduino uno遙控小車

    序言 前面突然看到自己已經(jīng)落灰的Arduino板子,感覺自己必須做點什么。正好手上有個8266的模塊、有個焊接接好的小車、有個落灰的Arduino板子,好巧。正好前幾天上過一篇8266模塊和微信小程序進行UDP通信的博文,一切都正好,那開搞吧。 前置知識需要的不多 至少要去看看微

    2024年02月09日
    瀏覽(28)
  • stm32 AW9523B IO擴展芯片擴展io口驅(qū)動程序

    對AW9523B驅(qū)動模塊進行初始化 對AW9523B驅(qū)動模塊進行操作 初始化AW9523B單個引腳 讀取AW9523B單個引腳 讀取AW9523B單個端口 用于存儲單個ic中的數(shù)據(jù),如需管理更多的結(jié)構(gòu)體,可以再增加定義 3060793968@qq.com?

    2024年01月20日
    瀏覽(68)
  • 24.STM32的IO口擴展PCF8574

    24.STM32的IO口擴展PCF8574

    PCF8574是一款帶IIC總線,可使大多數(shù)MCU實現(xiàn)遠程I/O 口擴展。 該器件包含一個8位準雙向口和一個IIC總線接口。(通信接口IIC,2根線可以擴展為8個口) PCF8574電流消耗很低,輸出鎖存具有大電流驅(qū)動能力可直接驅(qū)動LED 它還帶有一條中斷接線(INT)可與MCU的中斷邏輯相連,通過

    2024年02月03日
    瀏覽(15)
  • Freertos-mini智能音箱項目---IO擴展芯片PCA9557

    Freertos-mini智能音箱項目---IO擴展芯片PCA9557

    ????????項目上用到的ESP32S3芯片引腳太少,選擇了PCA9557擴展IO,通過一路i2c可以擴展出8個IO。這款芯片沒有中斷輸入,所以更適合做擴展輸出引腳用,內(nèi)部寄存器也比較少,只有4個,使用起來很容易。 輸入寄存器 ? 輸出寄存器 ?極性顛倒寄存器 ? ?配置寄存器 ? ????

    2024年02月13日
    瀏覽(17)
  • 基于STM32與PCA9685制作四足機器人(代碼開源)

    基于STM32與PCA9685制作四足機器人(代碼開源)

    ????????前言: 本文為手把手教學 基于STM32的四足機器人項目 —— JDY-31藍牙控制 ,特別地,本次項目 采用的是 STM32 作為 MCU 。 四足機器人的支架為 3D打印件 , SG90舵機 驅(qū)動機器人實現(xiàn)姿態(tài)運動。借助 PCA9685舵機驅(qū)動板 實現(xiàn) 12路PWM波 控制, 更多的舵機 可以實現(xiàn)機器人

    2024年02月03日
    瀏覽(25)
  • stm32中如何使用PCA9685控制舵機(詳解)

    stm32中如何使用PCA9685控制舵機(詳解)

    最近在公司實習,都說跨入職場是讓人進步最快的方式,記錄一下我自學加同學指點學到新知識。 PCA9685是一個基于IIC通信的16路PWM輸出模塊,可以在單片機資源不足的情況下進行擴展使用。 i2c通信,只需要2根i2c線就可以控制16路pwm,周期和占空比都可控。 可以多個模塊級聯(lián)

    2024年02月06日
    瀏覽(20)
  • STM32--PCA9685驅(qū)動(16路舵機驅(qū)動模塊)

    STM32--PCA9685驅(qū)動(16路舵機驅(qū)動模塊)

    目錄 PCA9685接線: PCA9685簡介: PCA9685地址位寄存器: MODE1寄存器,地址0x00,可讀、可寫: 寄存器地址: PCA9685代碼注解: 1.PCA9685數(shù)據(jù)寫入: ?2.PCA9685數(shù)據(jù)讀?。?3.PCA9685的頻率設置: 4.PCA9685的PWM設置: 舵機轉(zhuǎn)動角度置換: PCA9685驅(qū)動代碼: main.c程序: IIC驅(qū)動:(正點原子

    2024年03月25日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包