pos機(jī)萬(wàn)能驅(qū)動(dòng)下載

 新聞資訊2  |   2023-07-20 09:44  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)萬(wàn)能驅(qū)動(dòng)下載,PIC32MZ芯片spi驅(qū)動(dòng)開(kāi)發(fā)的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)萬(wàn)能驅(qū)動(dòng)下載的問(wèn)題,今天pos機(jī)之家(m.jzsl.com.cn)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!

本文目錄一覽:

1、pos機(jī)萬(wàn)能驅(qū)動(dòng)下載

pos機(jī)萬(wàn)能驅(qū)動(dòng)下載

最近在項(xiàng)目開(kāi)發(fā)過(guò)程中用的了PIC32MZ1024EFE144芯片,其中一個(gè)功能是通過(guò)SPI接口控制SI4438實(shí)現(xiàn)無(wú)線通信。具體的調(diào)試步驟分享如下。

1、PIC32MZ芯片SPI接口引腳配置

PIC32MZ芯片有6路SPI接口,在項(xiàng)目中使用SPI2。

SPI2的SCK是固定引腳,不可更改;SDI2/SDO2/SS2是通過(guò)端口映射來(lái)配置。

//SI4438 SPI管腳選擇 PLIB_PORTS_PinModePerPortSelect(PORTS_ID_0,PORT_CHANNEL_G,PORTS_BIT_POS_1,PORTS_PIN_MODE_DIGITAL);//SDO2 PLIB_PORTS_PinModePerPortSelect(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_3,PORTS_PIN_MODE_DIGITAL);//SDI2 PLIB_PORTS_PinModePerPortSelect(PORTS_ID_0,PORT_CHANNEL_G,PORTS_BIT_POS_6,PORTS_PIN_MODE_DIGITAL);//SCK2 PLIB_PORTS_ChangeNoticePullUpPerPortEnable( PORTS_ID_0, PORT_CHANNEL_B, PORTS_BIT_POS_3 ); // PLIB_PORTS_RemapOutput(PORTS_ID_0,OTPUT_FUNC_REFCLKO3,OUTPUT_PIN_RPG6); /* PPS Input Remapping */ SDI2R=8;//RPB3 SDI2 /* PPS Output Remapping */ RPG1R = 6;// RPG1 SDO2 PLIB_PORTS_PinDirectionOutputSet( PORTS_ID_0, PORT_CHANNEL_G, PORTS_BIT_POS_1 );//SCK2 PLIB_PORTS_PinDirectionOutputSet( PORTS_ID_0, PORT_CHANNEL_G, PORTS_BIT_POS_6 );//SDO2 PLIB_PORTS_PinSet( PORTS_ID_0, PORT_CHANNEL_B, PORTS_BIT_POS_2 );//SI4438 SS2 PLIB_PORTS_PinDirectionOutputSet( PORTS_ID_0, PORT_CHANNEL_B, PORTS_BIT_POS_2 );// SS2

2、PIC32MZ芯片SPI模塊時(shí)鐘選擇

CPU內(nèi)部任何一個(gè)模塊都需要時(shí)鐘才能工作,需要給SPI模塊配置時(shí)鐘源。項(xiàng)目中芯片的系統(tǒng)時(shí)鐘是120M,使用PBCLK2作為SPI的時(shí)鐘源。

/* usart、I2C、PMP use clock PBCLK2 set this to sys clk*/ PLIB_OSC_PBClockDivisorSet(OSC_ID_0, OSC_PERIPHERAL_BUS_2, 2 );

SPIxCON: SPI Control Register

3、PIC32MZ芯片SPI模塊參數(shù)配置

SPI參數(shù)初始化比較簡(jiǎn)單,沒(méi)有使用中斷收發(fā),根據(jù)功能寄存器進(jìn)行參數(shù)配置即可。SPI的通信模式需要和SI4438匹配,這個(gè)通信模式一定要正確,否則無(wú)法通信。

void SPI2_Initialize ( void ){ uint32_t rdata; /* STOP and Reset the SPI */ SPI2CON = 0; /* Clear the Receiver buffer */ rdata = SPI2BUF; rdata = rdata; /* BAUD Rate register Setup */ SPI2BRG = 3; /* CLear the Overflow */ SPI2STATCLR = _SPI2STAT_SPIROV_MASK; /* MSTEN = 1 CKP = 0 CKE = 1 MODE<32,16> = 0 ENHBUF = 1 MSSEN = 0 MCLKSEL = 0 */ SPI2CON=0x8020|SPI_CLOCK_PHASE_LEADING_EDGE|_SPI2CON_ENHBUF_MASK; // SPI ON, 8 bits transfer, SMP=0, Master mode}

4、PIC32MZ芯片SPI模塊收發(fā)驅(qū)動(dòng)

這里收發(fā)函數(shù)分開(kāi)是為了方便閱讀,實(shí)際上,由于和SI4438進(jìn)行SPI通信時(shí)是半雙工,收發(fā)完全可以寫(xiě)到一個(gè)函數(shù)里。

bool SPI2_Write(void* pTransmitData, size_t txSize){ uint32_t i; uint32_t rdata; for( i=0;i<txSize;i++) { SPI2BUF = *((uint8_t*)pTransmitData + i); while((SPI2STAT & _SPI2STAT_SRMT_MASK) == 0); while ((bool)(SPI2STAT & _SPI2STAT_SPIRBE_MASK) == true); rdata = SPI2BUF; }}bool SPI2_Read(void* pReceiveData, size_t rxSize){ uint32_t i; for( i=0;i<rxSize;i++) { SPI2BUF = 0xFF; while((SPI2STAT & _SPI2STAT_SRMT_MASK) == 0); while ((bool)(SPI2STAT & _SPI2STAT_SPIRBE_MASK) == true); *((uint8_t*)pReceiveData+i) = SPI2BUF; }}

總結(jié)

在產(chǎn)品開(kāi)發(fā)中,SPI功能用的非常多,邏輯相對(duì)簡(jiǎn)單,雖然每顆芯片的配置都不一樣,但是總體上都是要從管腳配置、時(shí)鐘選擇、寄存器初始化、收發(fā)驅(qū)動(dòng)這些方面著手。

芯片手冊(cè)下載地址:

Section 23. Serial Peripheral Interface (SPI):http://ww1.microchip.com/downloads/en/DeviceDoc/61106G.pdf

PIC32MZ EF Family Datasheet_DS60001320G:http://ww1.microchip.com/downloads/en/DeviceDoc/PIC32MZ EF Family Datasheet_DS60001320G.pdf

以上就是關(guān)于pos機(jī)萬(wàn)能驅(qū)動(dòng)下載,PIC32MZ芯片spi驅(qū)動(dòng)開(kāi)發(fā)的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)萬(wàn)能驅(qū)動(dòng)下載的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://m.jzsl.com.cn/newsone/87296.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。