串列埠 朱老師物聯網大講堂

2021-07-10 15:20:09 字數 2541 閱讀 5472

1.7.6.s5pv210序列通訊介面詳解3

1.7.6.1、序列通訊與中斷的關係

(1)串列埠通訊分為傳送/接收2部分。傳送方一般不需要(也可以使用)中斷即可完成傳送,接收方必須(一般來說必須,也可以輪詢方式接收)使用中斷來接收。

(2)傳送方可以選擇使用中斷,也可以選擇不使用中斷。使用中斷的工作情景是:傳送方先設定好中斷並繫結乙個中斷處理程式,然後傳送方丟一幀資料給transmitter,transmitter傳送耗費一段時間來傳送這一幀資料,這段時間內傳送方cpu可以去做別的事情,等transmitter傳送完成後會產生乙個txd中斷,該中斷會導致事先繫結的中斷處理程式執行,在中斷處理程式中cpu會切換回來繼續給transmitter放一幀資料,然後cpu切換離開;不使用中斷的工作情景是:傳送方事先禁止txd中斷(當然也不需要給相應的中斷處理程式了),傳送方cpu給一幀資料到transmitter,然後transmitter耗費一段時間來傳送這幀資料,這段時間cpu在這等著(cpu沒有切換去做別的事情),待傳送方傳送完成後cpu再給它一幀資料繼續傳送直到所有資料發完。cpu是怎麼知道transmitter已經傳送完了?原來是有個狀態暫存器,狀態暫存器中有乙個位叫傳送緩衝區空標誌,transmitter傳送完成(傳送緩衝區空了)就會給這個標誌位置位,cpu就是通過不斷查詢這個標誌位為1還是0來指導傳送是否已經完成的。

(3)因為串列埠通訊是非同步的,非同步的意思就是說傳送方佔主導權。也就是說傳送方隨時想發就能發,但是接收方只有時刻等待才不會丟失資料。所以這個差異就導致傳送方可以不用中斷,而接收方不得不使用中斷模式。

1.7.6.2、210序列通訊介面的時鐘設計

(1)串列埠通訊為什麼需要時鐘?因為串列埠通訊需要乙個固定的波特率,所以transmitter和receiver都需要乙個時鐘訊號。

(2)時鐘訊號從**來?源時鐘訊號是外部apb匯流排(pclk_psys,66mhz)提供給串列埠模組的(這就是為什麼我們說串列埠是掛在apb匯流排上的),然後進到串列埠控制器內部後給波特率發生器(實質上是乙個分頻器),在波特率發生器中進行分頻,分頻後得到乙個低頻時鐘,這個時鐘就是給transmitter和receiver使用的。

(3)串列埠通訊中時鐘的設定主要看暫存器設定。重點的有:暫存器源設定(為串列埠控制器選擇源時鐘,一般選擇為pclk_psys,也可以是sclk_uart),還有波特率發生器的2個暫存器。

(4)波特率發生器有2個重要暫存器:

ubrdivn和udivslotn,其中ubrdivn是主要的設定波特率的暫存器,udivslotn是用來輔助設定的,目的是為了校準波特率的。

1.7.7.s5pv210序列通訊程式設計實戰1

1.7.7.1、整個程式流程分析

1.7.7.2、串列埠控制器初始化關鍵步驟

(1)初始化串列埠的tx和rx引腳所對應的gpio(查原理圖可知rx和rx分別對應gpa0_1和gpa0_0)

(2)gpa0con(0xe0200000),bit[3:0] = 0b0010

bit[7:4] = 0b0010

(3)初始化這幾個關鍵暫存器ucon0 ulcon0 umcon0 ufcon0 ubrdiv0 udivslot0

1.7.7.3、主要的幾個暫存器

(1)ulcon0 = 0x3 // 0校驗位、8資料位、1停止位

(2)ucon = 0x5// 傳送和接收都是polling mode

(3)umcon0 = 0x0// 禁止modem、afc

(4)ufcon0 = 0x0// 禁止fifo模式

(5)ubrdiv0和udivslot0和波特率有關,要根據公式去算的

1.7.7.4、在c原始檔中定義訪問暫存器的巨集

定義好了訪問暫存器的巨集之後,將來寫**時直接使用即可。

1.7.8.s5pv210序列通訊程式設計實戰2

1.7.8.1、串列埠tx、rx對應的gpio的初始化

給gpa0con的相應bit位賦值為相應值,用c語言位操作來完成。

1.7.8.2、ucon、ulcon、umcon、ufcon等主要控制暫存器

依據上節中分析的值進行依次設定即可。

1.7.8.3、波特率的計算和設定

(1)第一步,用pclk_psys和目標波特率去計算div_val: div_val = (pclk / (bps x 16)) ?1

(2)第二步,ubrdiv0暫存器中寫入div_val的整數部分

(3)第三步,用小數部分*16得到1個個數,查表得ubdivslot0暫存器的設定值

ps:計算公式: 波特率設定div_val = (pclk / (bps x 16))-1

// pclk_psys用66.7mhz算餘數0.18

// div_val = (66700000/(9600*16)-1) = 432.244

rubrdiv0 = 432;

// (rudivslot中的1的個數)/16=上一步計算的餘數=0.18

// (rudivslot中的1的個數 = 16*0.244= 3.9 = 4

rudivslot0 = 0x2222;// 3個1,查官方推薦表得到這個數字

1.7.8.4、串列埠傳送和接收函式的編寫

(1)寫傳送函式,主要傳送前要用while迴圈等待傳送緩衝區為空才能傳送。

殭屍物聯網大戰區塊鏈

2016年的10月21日,殭屍病毒讓半個美國的網際網路都陷入癱瘓,將此次攻擊稱作是 史上最嚴重 ddos 攻擊 包括 twitter paypal spotify 在內多個人們每天都用的 被迫中斷服務,其中部分重要的攻擊 於iot裝置。2016年10月26日,搜尋發現全球感染殭屍病毒的裝置已經超過1...

eXtremeDB榮獲物聯網大資料卓越獎提名

2017年5月3日 倫敦紐約 極速資料庫管理系統extremedb 的開發方mcobject 宣布,extremedb資料庫系統因傑出資料類別結構榮獲物聯網大資料卓越獎提名。incisive media的物聯網大資料卓越獎是用來表彰在it行業提供解決方案 產品和獨特個性的成功公司和個人。大資料是物聯...

物聯網大棚可控制哪些因素

1.溫度 生物的生存對溫度的要求很高,只能在乙個比較窄的範圍。溫度對生物的作用可分為最低溫度 最適溫度和最高溫度,即生物的三基點溫度。當環境溫度在最低和最適溫度之間時,生物體內的生理生化反應會隨著溫度的公升高而加快,代謝活動加強,從而加快生長發育速度 當溫度高於最適溫度後,參與生理生化反應的酶系統受...