---
# System prepended metadata

title: 新訓DSP
tags: [新生訓練, F2812]

---

[TOC]

# 背景知識
- 見[新訓STM](https://hackmd.io/jPwrvyGQTxWJCNfoK7yDAA?view#%E8%83%8C%E6%99%AF%E7%9F%A5%E8%AD%98)背景知識
- 使用過STM後大概對微處理器的認識也大差不差了，不同的是STM的HAL庫有更貼近使用者層面的封裝，而且有CubeMX的輔助，在設定暫存器上更直覺。DSP程式庫也只是定義一些暫存器結構和初始化函式而已，因此仍得依照需求親自寫入每個暫存器的值。
- 學習STM時大概知道各功能以及參數怎麼給就好，學習DSP則需要進一步知道這些參數由哪些暫存器掌管


# DSP簡介
- DSP的優勢、特點可見 <手把手教你DSP> 1.1.1 ~ 1.1.3 節
- 早期的MCU多使用定點運算，實驗室的F2812也是定點運算DSP，而F28335則支持浮點運算，浮動的小數位數在使用上更適合高精度與複雜運算
- [教學影片](https://youtube.com/playlist?list=PL40HX6x4OOCWQA77_keeZR8c8USQn941G&si=F9ufZzU6uhbeqqS2)，需要的話可以配著用

## 實驗室的DSP
- 燒錄器使用，建議找盒子裝著，排針有防呆，但別太呆
- DSP需要額外供電，請使用輸出為5V的變壓器，按鈕為電源開關，通電後亮藍燈
### F2812
- 實驗室的2812電路板最新為2018版，相比2014版在CAP3_QEPI1和CAP6_QEPI2腳位增加了RC電路使得穩定，除了一些電路布局位置外，兩版本其實差不多
- FTP上的資源有
	- <手把手教你DSP>電子書
	- 高碩聰學長的F2812專案Generator
	- 專案Generator同樣使用的F2812 Library和example
	- 專案Generator使用的cmd files
	- 其他相關手冊(網路上查的到)
	- 實驗室電路板的pcb檔(2018版)、腳位圖(2014版)
### F28335
- 問董守驥



# 開發方式

## CCS (Code Composer Studio) 軟體操作
- CCS可用於編輯、燒錄程式
- [12.8 user guide (Eng)](https://software-dl.ti.com/ccs/esd/documents/users_guide/index.html#)、[12.8 用戶指南(中文)](https://software-dl.ti.com/ccs/esd/documents/users_guide_zh/index.html)
- 使用Generator建立專案、編譯與燒錄(見FTP)
- 從頭建立新專案(未紀錄，包含庫文件引入、cmd file引入與修改、ram/flash 設定等等)
- 我也忘記這些是什麼了，想試著自己建立新專案可以看看
    https://blog.csdn.net/WEN_LG/article/details/84649060
    https://blog.csdn.net/Augusdi/article/details/6289961
    https://blog.csdn.net/Augusdi/article/details/6159688
    https://blog.csdn.net/a1207607057/article/details/129857122
    https://blog.csdn.net/qq_57798018/article/details/128337830
    https://blog.csdn.net/Husenburg/article/details/80538123

## 程式編寫
- 因為是直接對暫存器寫入值，直接看程式可能無法一眼看出對應的模式或功能，建議多打些備註，或善用 #define 方式命名，提升可讀性
- 

## DSP使用(以F2812為例)
- 以下筆記皆為<手把手教你DSP>的紀錄，實際使用遇到問題最好都翻翻這本書與其他相關手冊對照
- 存儲空間與cmd file章節略過，Generator已有一部份。如果程式或數據龐大需要指定儲存空間最好還是摸清楚喔
- DSP的CPU timer就像STM的基礎Timer只有計時功能，而Event Manager裡的General Timer和STM的通用計時器一樣有其他比較、PWM、QEP等功能，以下直接講解EV timer的使用，跳過CPU Timer章節

### [F2812的暫存器語法](https://hackmd.io/IOGWQn5uRP2vfxMdQcQ6zg)
### [F2812的初始化](https://hackmd.io/vGiH_bLMTEC1baO3HxS5NA)
### [F2812的GPIO](https://hackmd.io/vVJOxl7uSs6eod_ituu_YA)
### [F2812的時鐘](https://hackmd.io/G8OQeKlySRW2S2XB2iI2cw)
### [F2812的中斷系統](https://hackmd.io/xCWvBIXRRpeKnSnIzPNkOQ)
### [F2812的Event Manager : Timer、Timer中斷](https://hackmd.io/8JW5CO7lQuym3EJPMrzbGA#EV-%E7%9A%84-Timer)
### [F2812的Event Manager : 比較與 PWM](https://hackmd.io/ROd_3d5HSoahlkI6AGkmBw)
### F2812的Event Manager : Capture
### [F2812的Event Manager : QEP](https://hackmd.io/UvA-2X_uQuiAwQMDjZXi3g)
### F2812的ADC
