久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5680|回復(fù): 3
收起左側(cè)

FM1208 CPU卡操作程序調(diào)試小結(jié)

[復(fù)制鏈接]
ID:223631 發(fā)表于 2017-7-31 18:20 | 顯示全部樓層 |閱讀模式

FM1702這款芯片的操作可以通過(guò)SPI串口,也可以通過(guò)并口。在我們的設(shè)計(jì)中,是通過(guò)SPI串口進(jìn)行操作的。所以在硬件電路搭建好了之后,首先要做的是調(diào)試SPI接口。我們所用的控制芯片是STM32F103C8TL,其中集成了SPI接口,對(duì)其進(jìn)行操作就是進(jìn)行一些設(shè)置,然后讀寫緩沖區(qū),標(biāo)志位,片選信號(hào)線。在程序中設(shè)置如下:

SCK,MISO,MOSI對(duì)應(yīng)芯片上的引腳設(shè)為推挽復(fù)用,

RST,NSS對(duì)應(yīng)的芯片上的引腳設(shè)為推挽輸出,

設(shè)置SPI端口:方向,為雙向全雙工;模式,主模式;數(shù)據(jù)大小,8bits;NSS為高時(shí)鐘電平為高;在NSS有效后第二個(gè)周期數(shù)據(jù)有效;發(fā)送或者接受的第1比特為8bits中的最高位;循環(huán)糾正碼為7。

ST芯片上的SPI端口設(shè)定好之后,就是進(jìn)行SPI端口調(diào)試,這個(gè)模塊的調(diào)試,我們是費(fèi)了一些周折的,先是直接連上FM1702芯片,發(fā)送數(shù)據(jù)并接收數(shù)據(jù),結(jié)果總是令人沮喪,這是第一步,SPI口沒(méi)有調(diào)通,之后的操作都不能進(jìn)行。后來(lái)改了一下,接上Flash來(lái)調(diào)試SPI端口,由于開(kāi)發(fā)平臺(tái)是ST的一個(gè)開(kāi)發(fā)板,把以前一個(gè)廢板子,上面有Flash的,通過(guò)飛線將對(duì)應(yīng)端口連接起來(lái),結(jié)果受到廢板子電路的影響,高低電平都無(wú)法穩(wěn)定得到,然后換了一個(gè)有Flash的廢板子,就可以了,這個(gè)大概是僥幸吧。

讓我覺(jué)得欣慰的是,在兩天內(nèi),我就完成了對(duì)AT45DB161這個(gè)Flash存儲(chǔ)器的讀寫操作的程序,當(dāng)然是在借鑒別人的一些程序的基礎(chǔ)上。讓我有點(diǎn)納悶,并且有點(diǎn)出乎我的意料的是,SPI端口的讀操作,并不是我分析出來(lái)的那樣:

先讓NSS有效(低)并保持有效,然后發(fā)送一個(gè)地址命令(1byte),接著檢測(cè)接收緩沖器的標(biāo)識(shí)位,有效以后讀取緩沖區(qū)的值,然后將NSS無(wú)效。這個(gè)流程是我分析出來(lái)的,但是這樣是不對(duì)的,因?yàn)檫@樣無(wú)法讀出數(shù)據(jù),讀出來(lái)的數(shù)據(jù)也是不對(duì)的。

在我參考、學(xué)習(xí)了好幾個(gè)SPI操作程序之后,我發(fā)現(xiàn)了正確的讀操作流程,1,讓NSS有效(低)并保持有效;2,發(fā)送一個(gè)無(wú)效字節(jié)(DUMMY),3,檢測(cè)接收緩沖器的標(biāo)示位,有效后讀取接收緩沖區(qū)的數(shù)據(jù)。4,讓NSS無(wú)效(高)。而正確的發(fā)送一個(gè)字節(jié)操作流程為1,讓NSS有效(低)并保持有效;2,發(fā)送一個(gè)命令或者數(shù)據(jù);3,檢測(cè)接收緩沖器的標(biāo)志位,有效后讀取數(shù)據(jù)(1byte);4,讓NSS無(wú)效(高)。其中讀操作的第二步,是為了給SPI端口提供時(shí)鐘,而寫操作的第3步好似多余,因?yàn)樽x出的數(shù)據(jù)是無(wú)效數(shù)據(jù)。

不管怎樣,經(jīng)過(guò)折騰,把SPI接口的操作調(diào)試通過(guò)了。緊接著做的工作就是調(diào)試FM1702的讀寫,參看了文檔之后,發(fā)送地址,數(shù)據(jù),發(fā)送地址,接收數(shù)據(jù),主要是對(duì)FM1702中的FIFO進(jìn)行讀寫,對(duì)Command寄存器進(jìn)行讀寫,以及對(duì)一些寄存器進(jìn)行設(shè)置。

測(cè)試這些寄存器通過(guò)之后,寫好一個(gè)初始化FM1702的程序進(jìn)行設(shè)置。設(shè)置好了以后,就要通過(guò)FM1702對(duì)卡片(FM1208)進(jìn)行操作,1,尋卡;2,防沖突;3,選卡;這三步執(zhí)行成功就會(huì)選定一張卡接下來(lái)的操作就是針對(duì)這張卡的。在第2步中,會(huì)獲得卡片的序列號(hào),這個(gè)序列號(hào)是生產(chǎn)卡片時(shí)就確定了的。

接著是Rats和PPS命令,這兩條命令通過(guò)之后就進(jìn)入了MF,MF是默認(rèn)的一個(gè)文件夾,將CPU卡內(nèi)的64k空間當(dāng)做一個(gè)文件夾便于管理操作。之后的操作就是建立文件夾(應(yīng)用),然后建立文件,添加記錄等的操作。

在發(fā)送命令對(duì)卡進(jìn)行操作時(shí),有個(gè)問(wèn)題然我很頭痛,直到最后才解決,那就是發(fā)送命令等待返回值,有時(shí)候是操作失敗,沒(méi)有成功,那么可以繼續(xù)發(fā)送,但是我并不知道怎樣去判斷該等待多長(zhǎng)時(shí)間才去讀取返回值,在調(diào)試的過(guò)程中,(1)如果把它設(shè)為死循環(huán),只要沒(méi)有得到相應(yīng)的相應(yīng),就一直發(fā)送,結(jié)果這樣很不好,假如在尋卡時(shí)失敗,或者發(fā)送命令有誤,那么程序無(wú)法跳出。(2)又試著把延遲設(shè)置得比較小,因?yàn)檫@樣可以讓系統(tǒng)反應(yīng)快一點(diǎn),有錯(cuò)就重新來(lái)過(guò),但是有些命令,(如創(chuàng)建文件,添加記錄)執(zhí)行正確之后,需要很長(zhǎng)時(shí)間才能有返回值,還沒(méi)有到執(zhí)行結(jié)束,由于延遲不夠,就判定執(zhí)行失敗了,又重新發(fā)命令,結(jié)果是一直都操作失敗。后來(lái)我發(fā)現(xiàn),(3)可以通過(guò)檢測(cè)FM1702的一個(gè)寄存器(中斷請(qǐng)求寄存器)的值來(lái)判斷是否完成了接受返回值。不能進(jìn)行的操作是,等待期間讀取FIFO的值,或者FIFO長(zhǎng)度。這樣還是有(1)中的問(wèn)題,當(dāng)一開(kāi)始沒(méi)有卡,而后來(lái)有卡時(shí)就沒(méi)有辦法檢測(cè)到,所以在(3)的基礎(chǔ)上添加一個(gè)延遲判別,到達(dá)一定延遲時(shí)間還沒(méi)有返回正確值就判定命令執(zhí)行失敗,再重新發(fā)送。這個(gè)問(wèn)題在調(diào)試的過(guò)程中讓我吃盡苦頭,有時(shí)候都不知道是這個(gè)地方的問(wèn)題,最后終于解決,心中也有那么一點(diǎn)的成就感。

還有一些問(wèn)題,是在復(fù)旦微電子那邊的技術(shù)支持(唐工)的幫助下解決的,主要是后面建立錢包,管理錢包,充值,消費(fèi)程序調(diào)試的時(shí)候,有一個(gè)問(wèn)題,困擾了幾天,在調(diào)試初始化圈存命令時(shí),總是返回69 85,使用條件不滿足,唐工幫我看了好久,排除了各種權(quán)限問(wèn)題,還是不行,后來(lái)我仔細(xì)看文檔,發(fā)現(xiàn)其中說(shuō)錢包文件的標(biāo)識(shí)符要設(shè)為00 02,改過(guò)來(lái)之后就執(zhí)行成功了;還有一個(gè)問(wèn)題也是讓我很困擾,在調(diào)試圈存命令時(shí),總是返回6901,一開(kāi)始,唐工告訴我要建立一個(gè)應(yīng)用公共基本數(shù)據(jù)文件,并且往里面添加記錄,當(dāng)我把這個(gè)完成(其實(shí)也不簡(jiǎn)單,這個(gè)文件是線路保護(hù)的二進(jìn)制文件,添加記錄也是一件麻煩的事情)之后,圈存命令返回值還是6901,后來(lái)在我都覺(jué)得沒(méi)有希望的時(shí)候,唐工幫我仔細(xì)分析了我的操作流程,發(fā)現(xiàn)問(wèn)題就在初始化圈存之后,卡片的狀態(tài)發(fā)生了改變,我仔細(xì)檢查,發(fā)現(xiàn)有一個(gè)獲取隨機(jī)數(shù)的命令,改過(guò)來(lái)之后,調(diào)試成功了,心中又是一陣歡喜。就這樣,后面的消費(fèi)指令也順利調(diào)試通過(guò)了。


回復(fù)

使用道具 舉報(bào)

ID:224118 發(fā)表于 2017-8-2 15:28 | 顯示全部樓層
你好,我現(xiàn)在編寫fm1702芯片,遇到了你所說(shuō)的SPI沒(méi)調(diào)通,以下是我的讀操作,我也用此函數(shù)先發(fā)送一個(gè)無(wú)用字節(jié),也調(diào)不通,請(qǐng)你幫忙看看,謝謝
unsigned char  read_FM17XX_byte(unsigned char spi_addr)
{
        unsigned char i,m;
        FM_SCK=0;
        FM_NSS=0;
        FM_MISO=1;
        DELAY_US
        spi_addr<<=1; //低位置0
        spi_addr=0x80|spi_addr;        //高位置一 代表讀
    //發(fā)送地址
        for(i=0;i<8;i++)
        {
               
                if(spi_addr&0x80)
                {
                        FM_MOSI=1;
                }
                else
                {
                        FM_MOSI=0;       
                }
                DELAY_US
            FM_SCK=1;
                spi_addr<<=1;
                DELAY_US
                FM_SCK=0;               
        }
        m=00;
       
        DELAY_US
        DELAY_US
        for(i=0;i<8;i++)
        {       
                m<<=1;       
                if(FM_MISO==1)
                {
                        m=m|0x01;
                }
                FM_SCK=1;
                DELAY_US
                FM_SCK=0;
                DELAY_US
               
        }
        FM_NSS=1;
        FM_SCK=0;
        return m;
}
回復(fù)

使用道具 舉報(bào)

ID:148552 發(fā)表于 2019-2-22 16:04 | 顯示全部樓層
樓主可以加個(gè)QQ交流下嗎?我也是做一卡通的
回復(fù)

使用道具 舉報(bào)

ID:1082966 發(fā)表于 2023-6-9 10:47 | 顯示全部樓層

樓主完成這個(gè)了嗎?最近也在弄這個(gè),有資源共享嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久久国产精品 | 黄色影音 | 亚洲成人一区 | 800av在线播放| 日韩一区二区三区免费 | 午夜免费看片 | 日韩一区二区三区在线 | 韩日在线视频 | 国产精品久久久久久亚洲影视 | 一级毛片免费播放 | 91精品久久香蕉国产线看观看 | 国产乱国产乱300精品 | 国产精品尤物 | 亚洲精品一区二三区 | 成人免费黄色大片 | 狠狠干2018 | 久久九九视频 | 草逼视频网站 | 欧美日韩国产在线播放 | 亚洲免费精品 | 久久99精品久久久久久水蜜桃 | 日韩专区中文字幕 | 国产原创精品 | 美女视频一区二区 | 91久久久精品 | 国产精品成人网 | 最新av在线播放 | 国产一区福利 | 国产免费成人 | 欧美777| 欧美mv日韩mv国产网站 | 婷婷激情六月 | 日韩中文字幕 | 成人高潮片免费网站 | 青青草原国产 | 久操福利| 国产一级片网站 | 国产午夜一区二区 | 国产精品一区三区 | 成人免费黄色片 | www.夜夜操 |