更多編程語言系列文章,點擊文末了解更多
痞子衡主導的"學術"項目 《RT-UFL - 一個適用全平臺i.MXRT的超級下載算法設計》 歷時 8 個月終于迎來了 v1.0 版發布,因為是第一個正式版,為了保證質量,痞子衡做了大量的測試工作,幾乎測遍了恩智浦官方 IMXRT-EVK 板(部分板子上還更換過不同型號Flash),確認全部板卡均測試通過,RT-UFL 達到了發布條件。
RT-UFL v1.0下載地址:https://github.com/JayHeng/RT-UFL/archive/refs/tags/v1.0.zip
超級下載算法 RT-UFL v1.0 版本主要針對 Segger J-Link 調試器,這也是本項目最原始的需求。當然為了能擴展支持各種 DAP-Link 類調試器,項目還有其他分支,即與 IDE 緊相關的下載算法,這些分支會在后續的版本里陸續完善。
一、在J-Link下安裝
要使用 Segger J-Link 調試器去下載 Flash,就離不開 J-Link 的下載算法,可以先瀏覽一遍痞子衡舊文 《串行NOR Flash下載算法(J-Link工具篇)》,對 J-Link 下載算法有個初步設計,超級下載算法 v1.0 其實就是 J-Link 下載算法的一種特殊實現。
1.1 安裝J-Link驅動
Segger J-Link 調試器的功能離不開上位機的 J-Link 軟件驅動,痞子衡手頭的硬件調試器是正版 J-Link Plus v10.1,它可以配合不同版本 J-Link 驅動使用(如果安裝新版軟件驅動,在第一次使用時,硬件調試器里的 MCU 固件可能會被建議更新)。
J-Link驅動下載地址:https://www.segger.com/downloads/jlink
我們可以從 Segger 官網下載到所有歷史版本 J-Link 驅動,默認總是下載最新版本驅動,但是痞子衡不能保證超級下載算法總是適用最新版軟件驅動,所以還是建議下載安裝 v6.86f 版本驅動,這個版本是痞子衡實測的版本……
原文鏈接:https://www.dianyuan.com/eestar/article-7812.html
大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦i.MX RT1015/1020/1050三款MCU的FlexSPI NOR啟動的連接方式。
由于i.MXRT內部沒有非易失性存儲器,因此在系統設計時為i.MXRT搭配一塊存放應用程序代碼的存儲器是頭等大事。i.MXRT支持啟動的外部存儲器類型眾多,其中通過FlexSPI接口連接串行NOR Flash是首選。
就i.MXRT芯片引腳本身來說,其FlexSPI模塊支持的Pinmux選擇較多,這在芯片參考手冊Chip IO一章可以找到具體信息。但是并不是所有FlexSPI Pinmux組合都能被用來連接串行NOR Flash去啟動。
i.MXRT1050/1020/1015是i.MXRT系列MCU家族比較早亮相的型號,也是客戶當前使用較多的i.MXRT芯片。它們三兄弟內部均只有一個雙通道8bit的FlexSPI模塊,在FlexSPI NOR啟動連接方式支持上是相似的。今天痞子衡就來跟大家好好聊一聊到底哪些FlexSPI NOR連接方式是可以用作啟動的。
一、涉及FlexSPI引腳
提及啟動,就不得不提i.MXRT芯片內部BootROM,BootROM是固化在芯片內部ROM空間的一段代碼,芯片上電永遠是BootROM先運行,由BootROM從外部存儲器去加載應用程序執行。因此FlexSPI NOR連接方式其實是由BootROM決定的,更直白點說,其實FlexSPI NOR連接方式是寫死在BootROM代碼里。
我們可以在芯片參考手冊System Boot這一章節找到BootROM指定的FlexSPI NOR引腳,痞子衡整理如下:
下表適用于i.MXRT105x:
下表適用于i.MXRT102x和i.MXRT1015:
上面的表格基本上已經給我們指明了方向,目前我們知道了哪些Pin可以用作FlexSPI NOR啟動連接,但是似乎還是有一些不清楚的地方:
疑問1:1st Option里一共有4根片選信號(SSx)和2根DQS信號,而Flash只需要一個片選和一個DQS,是不是所有片選+DQS組合都可以?
疑問2:1st Option里一共8根數據線,除了連接八線Octal/Hyper Flash之外,是否可以單連四線QSPI Flash?PortA和PortB是不是都可以連QSPI Flash?
疑問3:是否可以從1st和2nd Option里分別挑選信號線和數據線來連接Flash?比如1st Option里的PortA_DATA[1:0]和2nd Option里的PORTA_DATA[3:2]組成四線。
疑問4:那根FlexSPI Reset信號對于1st和2nd Option是不是都適用?
疑問5:是否可以掛兩片QSPI Flash啟動?具體怎么掛?兩片Flash能否實現在一片Flash中執行代碼去擦寫另一片Flash?
疑問6:2nd Option里只有PortA和一根片選,但RT1050 Pinmux表里其也支持PortB和其他三根片選,那些信號線后續是否可以利用?
在下面文章的內容里,痞子衡會逐一為大家解析這些疑問……
原文鏈接:https://www.dianyuan.com/eestar/article-7817.html
昨天發了一篇TI的技術文章,里面提到了一個比較有意思的電路,就是用多路PWM并聯來提高PWM-DAC的輸出精度(如下圖,點擊可跳轉鏈接)。比如組合兩路8bit的PWM來組合為16bit的PWM-DAC。
理論
那么先解釋一下PWM的精度問題(因為PWM的占空比精度直接關聯到PWM做DAC應用時的DAC精度)。舉一個例子:如果要產生10kHz的PWM波形,而分別提供50Mhz的時鐘和10Mhz的PWM外設時鐘,那么毋庸置疑的是均可以產生10Khz的波形。
但是如果要調整這個波形的占空比,從0%到100%,那么在PWM時鐘為50Mhz的時候,可以調整出5000步,而在時鐘為10Mhz的情況下,只能調整出1000步。那么如果在上述的例子中,時鐘為10Mhz的情況下,如果想要保持分辨率為5000,那么就要改變PWM的頻率,把頻率降低為2Khz就可以滿足5000的分辨率。
然而在降低PWM頻率的時候會隨之帶來另一個問題,那么就是轉化出的DAC的紋波變大了(因為濾波器參數沒變,PWM的頻率降低后,濾波器對PWM的高次諧波的衰減變弱了)。那么為了維持轉化后DAC的紋波,就要調低濾波器的截止頻率。如下圖所示,濾波器和PWM的傅里葉變換后高次諧波的關系。
但是由RC濾波器的公式
可知,如若降低濾波器的截止頻率fc的話,有兩種選擇,要么增加電阻阻值,要么增加電容容值。然而這兩項無一例外的都會增加這個PWM轉DAC的建立時間(建立時間和RC常數相關)。那么有什么方法可以在保持時鐘和頻率以及建立時間都不改變的情況下來提高PWM-DAC的分辨率呢?
此時就可以使用多個PWM疊加,這種方法來提高轉化DAC分辨率的電路,簡圖如下:
仿真首先使用信號發生器輸出PWM頻率為100Khz,假定PWM分辨率為10(即PWM占空比的調節步長為10%)那么如果只用一路PWM轉DAC的話,輸出DAC的電壓只能是0.1*VCC,0.2*VCC,0.3*VCC一直到VCC,DAC輸出也是10%步進,和PWM的精度(10%步進)是完全一致的。
例如下圖仿真,幅值為10V的占空比為40%的PWM信號經過濾波器后輸出的電壓為4V。這個10V幅值PWM步進10%的話,這個電路的輸出電壓只能是隨著占空比的10%步進而輸出0V,1V,2V,3V,4V.....10V(1V精度)。
那么假如此時按照TI的思路,再并聯一路PWM過去會如何呢?此時綠色信號發生器XFG1的輸出PWM1便可以代表DAC的低位(即TI技術文檔中的PWML信號),藍色信號發生器XFG2的輸出PWM2便代表DAC的高位(即TI技術文檔中的PWMH信號),那么整個電路便可以輸出0-10V(1%步進,0.1V精度),輸出電壓公式可以列為:VXFG2*0.9+VXFG1*0.1(可以用疊加定理求取)……
原文鏈接:https://www.dianyuan.com/eestar/article-7882.html
昨天群友在群里問了一個關于運算放大器軌到軌輸出的問題,對此我寫一下我對此的理解,以及結合仿真,梳理給各位同好。理論問題的起因是楊建國老師的新概念模擬電路里的一個關于小信號放大的案例,大概就是輸出的電壓和預想偏差了很多,大家可以先看一下下面的節選。
群友的疑問:為什么運放的V-由GND(0V)改為-0.5V就輸出正常了?
回答:這個和運算放大器的軌到軌輸出有關系(比如0~5V供電,那么輸出幾乎等于0~5V范圍就算是軌到軌),雖然有的運算放大器說是軌到軌輸出,但是實際上,由于其內部結構原因,并不能完全軌到軌;就像楊老師舉的例子一樣,這個實際上第一級的運放是沒有輸出到0V的(如果暫且不考慮失調電壓電流等參數是要輸出0V)。就如手冊里寫的:
在Rl=10KΩ to Vcm的時候,0-5V供電的這個運放的輸出最小電壓為5mV(典型值)。這個不能完全軌到軌輸出也就導致了第二級運算放大器放大了這個最小輸出電壓,從而導致了偏差。
群友問:如果仍然是0V-5V供電,如果在同相輸入端或者反相輸入端疊加一個人為的偏置,能否抵消掉這個?能不能輸出到0V?
回答:不能,因為這個軌到軌輸出的最小或最大電壓是由運算放大器內部的結構,以及運算放大器的負載電流,并且和供電電壓直接相關的。無論在同相輸入端或者反相輸入端增加人為的偏置補償均不能抵消掉。就像楊老師書里寫的例子一樣,如果想要讓他輸出0V(不考慮失調電壓等參數),那么只能加負壓才能讓他輸出0V。
這一點可以理解為類似PMOS和NMOS的DS之間總會因為Rdson的存在而有一些壓降一樣,而且這個壓降會隨著流過DS的電流的增加而增加(I*Rdson)。
對此在ADI的設計文檔里也找到了對軌到軌輸出的相關描述,大家可以參照閱讀一下:
仿真驗證
那么我們就也仿真一下,去深入理解一下這個楊老師書里的問題吧……
原文鏈接:https://www.dianyuan.com/eestar/article-7883.html
今天在群里看到一個關于差動放大器的用法,仿真驗證一下,下面先看一下書里是怎么寫的,摘自《你好,放大器》第152頁。
書里說將差動放大器左右顛倒一下Vn變為Sense,Vp變為Vref,便可以實現放大功能(原本接法為衰減),并且所有的差動放大器都可以這么使用,那么就仿真一下看看吧:左圖正常接法,Ad為0.5倍(20K/40K),輸出為:Vout=Ad*(Vin+-Vin-)+Vref=0.5*2+0.5=1.5V右圖左右顛倒之后Ad變為2倍(40K/20K),輸出為:Vout=Ad*(Vin+-Vin-)+Vref=2*2+0.5=4.5V
和書里寫的完全符合,看來這個差動放大器的用法還是很靈活巧妙的。既可以衰減也可以放大。
然后翻了下AD8278的數據手冊,看到了一個注意事項,就是關于VREF管腳的,手冊里寫不要把Vref管腳直接用分壓電阻分壓后連接,分壓電阻分壓后需要加一個電壓跟隨器減小輸出阻抗后再接到Vref管腳(電壓跟隨器的輸入阻抗大,輸出阻抗小),這一點需要注意。
假如1V的電源,經過兩個10KΩ的電阻分壓出0.5V的Vref,那么這個分壓電路的輸出阻抗就等于10kΩ//10kΩ=5kΩ,那么此時這個差動放大器的輸出已經不再是之前計算的1.5V了(見第一張圖),由于這個信號源的阻抗大,會導致輸出產生誤差,所以有時候要格外注意信號源的輸出阻抗帶來的影響……
原文鏈接:https://www.dianyuan.com/eestar/article-7884.html
更多精彩內容,盡在電子星球 APP(https://www.eestar.com/)
六篇技術文章,讓你秒懂電容的脾氣秉性
七篇DIY技術文章獻給你,讓你腦洞全開
五篇文章幫你開啟DSP的學習思路
匯總篇:關于PID知識,重點在此