導航:首頁 > 源碼編譯 > 小站dsp源碼下載

小站dsp源碼下載

發布時間:2022-10-07 21:16:04

A. 誰有程序員聯合開發網的會員賬號,幫我下基於TI—240DSP的開關磁阻電機電流環,速度環的雙閉環控制源代碼

去TI的官網,搜switched reluctance motor SPRA420A能找到TI出到一份技術文檔,最後有程序。TI的datasheet都能在官網找到,很可能都不需要登錄。

B. 後綴名為.dsp的文件是什麼

項目文件名後綴為dsp(保存項目設置),它維護應用程序中所有的源代碼文件,以及Visual C++如何編譯、連接應用程序,以便創建可執行程序。Visual C++6的集成開發環境中,通過"File"菜單的"New"命令創建一個新的項目。創建一個項目的同時,也創建了一個項目工作區,項目工作區文件的後綴名為dsw(保存項目工作區的設置)。一個應用程序可以有一個項目及若干個子項目,但只有一個活動的項目。

C. 求一個基於fpga的i2c匯流排控制器的源代碼

// eeprom 24c02,08,16 radom byte read and write master
// author: jiajia.pi
// version: v1.2
// last modify date: 2014/08/19 change busy signal to ready
// clk_div range: 2~65535
// wr/rd bit is bit16 of wrdata, '0'=write, '1'=read
mole i2c_master(
clk, // global clock
reset_n, // global reset
scl, // i2c tri-state clock
sda, // i2c tri-state data
addr, // i2c word address
wrdata, // i2c 24bit write data, include device address, word address, 8bit write datas
rddata, // i2c 8bit read data
ready, // i2c ready output, assert high
ack // i2c acknowledge output
);

parameter [15:0] clk_div = 27_000_000/50_000-1; // i2c clock divsion

input clk;
input reset_n;
input wr;
input rd;
input [23:0]wrdata;
output [7:0]rddata;
output busy;
output ack;
inout scl;
inout sda;

reg [23:0]dat;
reg sco;
reg sdo;
reg [7:0]rddata;
reg busy;
reg ack1,ack2,ack3;

wire sda = sdo?1'bz:0;
wire scl = (sco|i2c_clk)?1'bz:0;
wire ready = !(wr||rd||busy);
wire rdnwr = dat[16];
wire ack = ack1|ack2|ack3;

reg[15:0] cnt;
always@(posedge clk or negedge reset_n)
if(!reset_n)
cnt <= 0;
else if(cnt<clk_div && busy)
cnt <= cnt + 1;
else
cnt <= 0;

wire i2c_clk_high_pos = (cnt==(clk_div>>2));
wire i2c_clk_low_pos = (cnt==(3*clk_div>>2));
wire i2c_dout_pos = (cnt==(clk_div));
wire i2c_din_pos = (cnt==(clk_div>>1));

reg i2c_clk;
always@(posedge clk or negedge reset_n)
if(!reset_n)
i2c_clk <= 0;
else if(i2c_clk_high_pos)
i2c_clk <= 1;
else if(i2c_clk_low_pos)
i2c_clk <= 0;

reg [5:0] sck_cnt;
always@(posedge clk or negedge reset_n)
if(!reset_n)
sck_cnt <= 63;
else if(rd|wr && !busy)
sck_cnt <= 0;
else if(!rdnwr && sck_cnt==19 && i2c_dout_pos)
sck_cnt <= 22;
else if(rdnwr && sck_cnt==30 && i2c_dout_pos)
sck_cnt <= 33;
else if(sck_cnt<44 && i2c_dout_pos)
sck_cnt <= sck_cnt + 1;

always@(posedge clk or negedge reset_n)
if(!reset_n)
dat <= 0;
else if(rd|wr && !busy)
dat <= wrdata;

always@(posedge clk or negedge reset_n)
if(!reset_n)
sdo <= 1;
else if(i2c_dout_pos)
case(sck_cnt)
0: sdo <= 1;
// write start
1: sdo <= 0;
// device address
2: sdo <= dat[23];
3: sdo <= dat[22];
4: sdo <= dat[21];
5: sdo <= dat[20];
6: sdo <= dat[19];
7: sdo <= dat[18];
8: sdo <= dat[17];
9: sdo <= 0; //device write
10: sdo <= 1; // ack1
// word address
11: sdo <= dat[15];
12: sdo <= dat[14];
13: sdo <= dat[13];
14: sdo <= dat[12];
15: sdo <= dat[11];
16: sdo <= dat[10];
17: sdo <= dat[9];
18: sdo <= dat[8];
19: sdo <= 1; // ack2
// read start
20: sdo <= 1;
21: sdo <= 0;
// write data
22: if(rdnwr) sdo <= dat[23]; else sdo <= dat[7];
23: if(rdnwr) sdo <= dat[22]; else sdo <= dat[6];
24: if(rdnwr) sdo <= dat[21]; else sdo <= dat[5];
25: if(rdnwr) sdo <= dat[20]; else sdo <= dat[4];
26: if(rdnwr) sdo <= dat[19]; else sdo <= dat[3];
27: if(rdnwr) sdo <= dat[18]; else sdo <= dat[2];
28: if(rdnwr) sdo <= dat[17]; else sdo <= dat[1];
29: if(rdnwr) sdo <= 1; else sdo <= dat[0];
30: sdo <= 1; // write ack3
// write stop
31: sdo <= 0;
32: sdo <= 1;
// read data
33: sdo <= 1; // bit 7
34: sdo <= 1; // bit 6
35: sdo <= 1; // bit 5
36: sdo <= 1; // bit 4
37: sdo <= 1; // bit 3
38: sdo <= 1; // bit 2
39: sdo <= 1; // bit 1
40: sdo <= 1; // bit 0
41: sdo <= 1; // read no ack
// read stop
42: sdo <= !rdnwr;
43: sdo <= 1;
endcase

always@(posedge clk or negedge reset_n)
if(!reset_n)
rddata <= 0;
else if(i2c_din_pos)
case(sck_cnt)
34: rddata[7]<= sda;
35: rddata[6]<= sda;
36: rddata[5]<= sda;
37: rddata[4]<= sda;
38: rddata[3]<= sda;
39: rddata[2]<= sda;
40: rddata[1]<= sda;
41: rddata[0]<= sda;
endcase

always@(posedge clk or negedge reset_n)
if(!reset_n)
ack1 <= 1;
else if(i2c_din_pos && sck_cnt==11)
ack1 <= sda;

always@(posedge clk or negedge reset_n)
if(!reset_n)
ack2 <= 1;
else if(i2c_din_pos && sck_cnt==20 && rdnwr) // read ack2
ack2 <= sda;
else if(i2c_din_pos && sck_cnt==22 && !rdnwr) // write ack2
ack2 <= sda;

always@(posedge clk or negedge reset_n)
if(!reset_n)
ack3 <= 1;
else if(i2c_din_pos && sck_cnt==31 && !rdnwr) // write ack3
ack3 <= sda;
else if(i2c_din_pos && sck_cnt==33 && rdnwr) // read ack3
ack3 <= sda;

always@(posedge clk or negedge reset_n)
if(!reset_n)
sco <= 1;
else if(sck_cnt==2 && i2c_clk_low_pos) // write start
sco <= 0;
else if(sck_cnt==21 && i2c_clk_low_pos && rdnwr) // read start high
sco <= 1;
else if(sck_cnt==22 && i2c_clk_low_pos && rdnwr) // read start low
sco <= 0;
else if(sck_cnt==32 && i2c_clk_low_pos && !rdnwr) // write stop
sco <= 1;
else if(sck_cnt==43 && i2c_clk_low_pos) // read stop
sco <= 1;

always@(posedge clk or negedge reset_n)
if(!reset_n)
busy <= 0;
else if(rd|wr && !busy)
busy <= 1;
else if(sck_cnt==44)
busy <= 0;

endmole

我自己寫的,希望能幫到你

D. 求推薦不錯的DSP學習源碼資源論壇(主要是F2812),另外,這幾天傅里葉電子的hellodsp論壇網頁怎麼這么卡

hellodsp上是搜集的網上各種資源,有一定借鑒意義。但是想真正學好2812,還是去TI的網站上下載代碼吧。TI做了大量的程序包,針對電機控制、電源等典型應用都有分類細致的源代碼和示例電路。

另外,TI推出了一個在線軟體平台controlSUITE,安裝之後,只要你的計算機處於聯網狀態,就能動態訪問和更新TI的DSP全系列產品的軟體、硬體參考設計,就像用資源管理器訪問自己的電腦一樣。

E. app如何實現與dsp埠對接

具體步驟如下: 1,瀏覽器登陸網站首頁,滑鼠右鍵—查看網頁源代碼; 2,在打開的源代碼中搜索查看generator,後面所跟內容為當前論壇版本號,搜索查看Content-Type,後面所跟內容為當前論壇編碼類型。 3,登陸opencom後台,點擊應用管理,選擇您需要對接的APP應用; 4,點擊網站對接菜單,下載插件對應論壇版本以及編碼的插件。目前我們提供dz3.2、dz3.1和dz2.5的gbk和utf8兩種類型,以及phpwind8.7版本;如需對接其它版本,可聯系客服,選擇好後接著點擊提交。 5,點擊下載,下載完後,請將解壓後的文件cbhook上傳到您論壇根目錄下然後在瀏覽器中鍵入(你的論壇網址/cbhook/index.php進行安裝) 6,在論壇上運行安裝插件,只有全部許可權為可寫才能安裝,如果某個許可權為不可寫,請注意修改(許可權修改請聯系伺服器提供商或者咨詢我司技術人員)。安裝完畢後回到opencom管理後台進行後面的操作。 7,輸入您網站域名,注意域名開頭需要加「+您的論壇網址」;點擊創建中央橋(請確保你的論壇程序安裝在根目錄下,如果放在特定文件夾中,請打開cbapi_config.php修改文件中論壇程序文件夾路徑)。 8,,中央橋創建成功後進入頻道對應設置環節,左邊板塊為程序抓取到的論壇板塊;右邊為所創建應用頻道;在下拉框中選擇您應用中所需要與論壇板塊對接的頻道,選好後點對接;也可以點新建頻道對接,系統自動會在應用中生成一個與您論壇板塊名字一樣的應用頻道(新生成的頻道圖標、介紹、許可權設置等可在對接好後自行在頻道設置中再修改);頻道對應設置好後,點擊開啟同步,看到「啟動中」綠色文字則為中央橋對接成功。

F. 我下載了個 VC++ MFC源代碼 我現在想把裡面的工程名 和所有的文件名都更改下

如果只改工程名,而不改文件的名稱,那不太復雜;

將.DSP改名,然後用記事本(或其他文本編輯器)打開這個DSP文件,將裡面除了後面文件名部分的所有替換。然後保存。

將.DSW改名,然後也用記事本打開它,然後將裡面所有的替換,然後保存。

這樣打開.DSW就可以了。
如果還想改文件名那就一個個文件去改 逐個去替換 哪裡報錯替換哪裡!
相當的麻煩!!

G. DSP編譯問題

先看CCS設置
再看鏈接庫是否添加正確
還有CMD文件是否正確,有的實驗箱用了兩個CMD,頭文件一個,用戶代碼一個。一般開發板一個。
實在不行就把源碼發上來,包括你的包含文件,以及設置選項。
CCS編譯器報錯有很多種情況。

H. 家庭影院AV功放源碼輸出好還是DSP音質好

功放好。
同樣的喇叭,用傳統功放推出來的聲音比DSP功放推的更自然、更醇厚耐聽。DSP功放的聲音底氣就沒有那麼渾厚,相對聲音也會單薄一些。
DSP功放的功率低於傳統功放。音色調教比傳統功放差,但聲場比傳統功放的寬廣。一般來說,功放的功率要大於喇叭的功率。DSP功放可以通過電腦更好地管理功放,EQ的調教,讓音響的聲音更耐聽更好聽。

I. 給我一篇完整的dsp程序設計

隨著DSP晶元功能的增強,已不再進行單純的數字信號處理任務,而是作為一種MCU被廣泛使用,控制板上各種資源,同時完成採集、計算、控制、通訊等任務。特別是當使用了TCP/IP或其它復雜通訊協議時,沒有一個實時多任務操作系統是很難進行任務調度的。μC/OS-II作為一種源碼公開的佔先式實時多任務操作系統,總是執行處於就緒狀態的優先順序最高的任務,並支持Semaphore(信號量)、Mailbox(郵箱)、Message Queue(消息隊列)等多種常用的進程間通信機制,是大多數高可靠嵌入式設備的首選。

2 開發環境簡介
APCI5096是北京康拓工業電腦公司自行開發的一款DSP目標板,主要用於對模擬信號量的采樣處理。該目標板以TMS320VC32為CPU,同時具有完備的輸入/輸出功能,可以實現30通道、16位、300KSPS的模擬輸入。調試用編譯器為TI公司的Code Composer 『C3x-『C4x,版本是4.10版。

3 移植過程
3.1 μC/OS-II系統結構
圖1說明了μC/OS-II的軟硬體體系結構。應用程序軟體處於整個系統的頂層,只和μC/OS-II與處理器無關的代碼以及μC/OS-II與應用相關的代碼關聯。這樣保證了應用軟體的可重用性。

μC/OS-II與處理器無關的代碼提供了μC/OS-II的系統服務。利用這些API函數,應用程序可以進行內存管理、任務間的通信以及創建、刪除任務等。μC/OS-II與應用相關的代碼提供了對μC/OS-II本身的裁減,並可根據實際需要進行任務數、任務棧的大小等設置。

大部分的μC/OS-II代碼是使用ANSI C語言書寫的,因此μC/OS-II的可移植性較好。盡管如此,仍然需要使用C和匯編語言寫一些處理器相關的代碼。移植工作需要改寫的是與處理器相關的代碼,包括三個文件:OS_ CPU.H、OS_ CPU_ C�C、OS_ CPU_ A�ASM。重點是任務堆棧的初始化、任務切換時棧指針的調整。

3.2 OS_ CPU.H
在不同的處理器中有不同的字長,所以必須重新定義一系列數據類型以確保移植的正確性。在OS_ CPU�H文件中應完成:數據類型的重新定義、堆棧數據類型的定義、堆棧增長方向的定義、臨界區開/關中斷的方法、任務切換函數OS_TASK_SW的宏定義。

(1)數據類型的聲明:在VC33中所有的整型數據(char、short、int、long)為相同的類型,用32位表示。浮點型數據(float、double)為相同類型,在VC33中用32位單精度浮點數表示。數據類型的重定義:
typedef unsigned char BOOLEAN;
typedef unsigned char INT8U;
typedef signed char INT8S;
typedef float FP32;
typedef double FP64;

(2)VC33棧的數據寬度為32位,採用上面重定義過的數據類型進行定義,確保棧數據類型的一致性。棧的數據類型聲明:
typedef INT32U OS_ STK;

(3)μC/OS-II訪問代碼的臨界區時需要先禁止中斷,並且在訪問完畢後重新允許中斷。μC/OS-II利用兩個宏來禁止和允許中斷,通過狀態寄存器的中斷使能位開關中斷。
cregister unsigned int ST; /*聲明CPU內部寄存器*/
#define OS_ ENTER_ CRITICAL() asm(「ANDN 2000H, ST "); /*清中斷使能位*/
#define OS_ EXIT_ CRITICAL() asm(「OR 2000H, ST "); /*置中斷使能位*/

3.3 OS_ CPU_ C.C
在OS_ CPU_ C.C文件中主要完成的是OSTaskStkInit()函數,其餘五個函數可以不進行處理。OSTaskStkInit()函數完成任務棧的初始化,使得任務棧的結構看起來如同在任務執行過程中發生過一次中斷並將所有寄存器保存到堆棧一樣。不同的編譯器在函數調用時會有不同的入棧方法,如:參數和返回地址入棧順序、參數之間入棧的順序、參數利用寄存器還是堆棧保存等。在具體實現時還需要根據編譯器的要求進行調整。

CCS函數調用時堆棧規則為:先將參數從左往右入棧、然後是函數返回地址入棧。依照此規則設計任務棧初始結構如圖2。VC33共有28個寄存器,程序中應將寄存器全部入棧,在OSTaskStkInit中實現:

{
OS_ STK *stk; /*定義棧的數據結構*/
opt=opt;
stk=(OS_ STK *)ptos; /*裝入棧頂指針*/
*stk=(OS_ STK)pdata; /*參數入棧*/
*++stk=(OS_ STK)task; /*任務返回地址*/
*++stk=(OS_ STK)task; /*中斷返回地址*/
*++stk=(OS_ STK)0x2000; /*狀態寄存器,開中斷*/ 其餘CPU寄存器全部入棧,並初始化為0
}

3.4 OS_ CPU_ A.ASM
在OS_ CPU_ A�ASM文件中要求用戶編寫四個簡單的匯編語言函數:OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()、OSTickISR()。這四個函數具有完全相同的公共部分:寄存器入棧和寄存器出棧。只要按照上面設計好的棧結構進行就可以了。注意的是VC33的R0到R7是擴展精度寄存器,具有40位。在入棧和出棧時均需要用兩句話完成,如下:
入棧: 出棧:
PUSH R0 POPF R0
PUSHF R0 POP R1

而OSIntCtxSw函數具有特殊部分,該函數用於從中斷返回時進行任務切換,由於在調用_ OSIntCtxSw函數前已經發生了中斷,中斷服務程序已經將CPU寄存器保存到堆棧中了,所以此處不再進行寄存器保存。同時還要進行棧指針的調整,去掉堆棧中一些不需要的內容,然後再將寄存器全部出棧。由於該函數是μC/OS-II中唯一的與編譯器相關的函數,所以在移植後必須利用多次任務切換檢查棧指針是否正確調整。

3.5 時鍾中斷源初始化
μC/OS-II還要求用戶提供一個時鍾資源,用於實現時間延時和確認超時。根據APCI5096的硬體設置,需要在三個文件中進行時鍾資源的設置。

(1)OS_ CPU_ A�ASM:
APCI5096中,已將VC33的定時器1用於測頻通道,因此利用未被佔用的定時器0產生定時中斷。實現方法為在TINT0的中斷向量入口處放一跳轉指令,跳轉到自己寫的OSTickISR。
�sect 「�TINT0_ vector"
TINT0 br _ OSTickISR

(2)CMD文件
將TINT0跳轉到OSTickISR後,還應再指定TINT0的向量入口地址。APCI5096板上的VC33被設置為BootLoader方式,在該方式下TINT0的入口地址固定在0x809FC9。在CMD文件的SECTIONS段指定如下:
�TINT0_ vector:> 0x809FC9

(3)Main�C文件
μC/OS-II要求用戶在OSStart()運行後,μC/OS-Ⅱ啟動運行的第一個任務中初始化節拍中斷。自己編寫一個函數TimerInit(),並在第一個任務開始處調用該函數完成定時器0的初始化。函數中TIM0_ XXX代表的是定時器0的三個寄存器的地址,在完成對定時器0的設置後還要打開全局中斷和時鍾中斷。

{
*TIM0_PRD= 0x7530; /*設置周期為1KHZ*/
*TIM0_CNT=0;
*TIM0_CTL=0x2C1; /*啟動時鍾*/
ST|=0x2000; /*打開中斷*/
IE|=0x100; /*打開時鍾中斷*/
}

4 測試、編寫驅動和應用程序
做完以上工作以後,就要測試移植是否成功。最初測試時,可以先運行操作系統本身,調度一些簡單的任務和時鍾節拍中斷任務。主要測試系統本身的正確性,如果調試成功就可以在上面繼續開發驅動程序和添加應用程序。

J. 下載的vc++源代碼怎樣使用

如果沒有.dsw和dsp,只有makefile之類的東東,那麼新建一個工程,把擴展名為cpp、h 和rc的文件加到工程中。然後查看所有cpp文件有沒有包含"stdafx.h",如果沒有,就在CPP首部加上"stdafx.h".
然後編譯。

閱讀全文

與小站dsp源碼下載相關的資料

熱點內容
成都市區建成面積演算法 瀏覽:656
智能家居單片機 瀏覽:93
買男裝用什麼app好 瀏覽:851
文件夾合並了怎麼拆開 瀏覽:256
波段副圖源碼無未來函數 瀏覽:84
livecn伺服器地址 瀏覽:257
程序員這個工作真的很吃香嗎 瀏覽:844
程序員和數學分析師待遇 瀏覽:678
壓縮氣彈簧怎麼拆 瀏覽:321
華為公有雲伺服器添加虛擬ip 瀏覽:209
程序員和運營哪個累 瀏覽:24
抖音安卓信息提示音怎麼設置 瀏覽:454
光速虛擬機的共享文件夾 瀏覽:248
程序員培訓機構發的朋友圈真實性 瀏覽:742
天乾地支簡單演算法 瀏覽:299
下載個壓縮文件 瀏覽:300
普通人電腦關機vs程序員關機 瀏覽:628
米酷建站源碼 瀏覽:115
氫氣app怎麼搜搭配 瀏覽:619
pdf綠盟 瀏覽:505