折騰的項(xiàng)目:終于換對(duì)MCU了,搞一個(gè)SPI的DMA通信
網(wǎng)站:bbs.21ic.com
從入職新公司后,一個(gè)項(xiàng)目我折騰了兩年,都是淚,每次以為開發(fā)完了,就會(huì)出事故,這次保守點(diǎn),用新塘一定沒問題,一定會(huì)成功量產(chǎn),一定不要重新來(lái)過。
這個(gè)項(xiàng)目經(jīng)歷百般周折,從國(guó)外型號(hào)最后到新塘,直接給我整吐了,有些是真的難用啊,也是老大難。最后到今天的主角新塘。
剛開始選用了新塘的NUC029,下載資料,搭建環(huán)境,串口測(cè)試,SPI測(cè)試,然后突然發(fā)現(xiàn)這玩意沒有DMA,白瞎了這么長(zhǎng)時(shí)間啊,樣板都做好了,結(jié)果出幺蛾子。
然后在換M031,這次深思熟慮,認(rèn)為不會(huì)有問題了才開搞。作為一個(gè)半成熟的程序猿,肯定不能helloword起手了,直接上UART吧。
環(huán)境搭建這里就跳過了,沒啥用,我還是用KEIL 5 開發(fā),自行下載個(gè)PACK包安裝就好了。點(diǎn)此前往新塘官網(wǎng)。搜索自己的MCU型號(hào),打開頁(yè)面,在資源中有文檔和軟件。
在文檔中下載數(shù)據(jù)手冊(cè)等文檔,在軟件中下載例程和工具,軟件中最實(shí)用的是以下幾個(gè)軟件:
從上到下依次是:官方例程庫(kù),Nu_link驅(qū)動(dòng),外設(shè)引腳配置軟件,時(shí)鐘配置軟件。
外設(shè)引腳配置軟件用于快速配置引腳以及復(fù)用,該軟件只能配置引腳及其功能,不能配置外設(shè)等功能呢,例如串口的相關(guān)配置,這些事實(shí)現(xiàn)不了的。
時(shí)鐘配置軟件僅用于配置系統(tǒng)時(shí)鐘以及各外設(shè)時(shí)鐘。這兩個(gè)軟件支持導(dǎo)出.c代碼??蓮?fù)制粘貼到自己的工程。
這兩個(gè)軟件都是非常簡(jiǎn)單的,這里就不贅述了。
但是有一個(gè)時(shí)鐘配置軟件有BUG,以我用的M031SE3AE為例,外部時(shí)鐘最大可使用32M,但是軟件中最大只支持24M,希望官方可以修復(fù)。
在M031中,區(qū)別于我之前用過的其他MCU,在進(jìn)入中斷函數(shù)之后,只要讀取串口接收寄存器UART_DAT中的值,便可自動(dòng)清除中斷標(biāo)志,并不需要去操作其他寄存器。非常好用。
DMA的啟動(dòng)和其他的MCU類似,[size=14.6667px]需重新配置傳輸個(gè)數(shù),[size=14.6667px]RAM[size=14.6667px]地址等,再調(diào)用一次初始化函數(shù)就行。然后利用[size=14.6667px]while (PDMA->DSCT[UART_TX_DMA_CH].CTL