你的位置:草榴社区最新地址 > 偷拍自拍 亚洲色图 厕底偷拍 > 丝袜美腿视频 怎样编写ADX122驱动法度?
丝袜美腿视频 怎样编写ADX122驱动法度?
发布日期:2024-10-06 21:32 点击次数:146
之前的章节里面我们写了adx112的驱动丝袜美腿视频,adx122的驱动我们还没写过,adx122是adx112的升级版块,升级成了20bit,况兼里面自带恒流源,关于ptc/ntc测温会有比拟好的匡助,省去了外围电路的偏置,adx122的第一页如下
粗略是能看的出来兼容adx112的,接管的是spi的接口,在这个章节我们主要讲是怎样编写驱动法度,是以先跳过一些蹙迫信息。
既然接管spi接口我们就望望是哪种SPI,三线或者四线,高潮沿写数据已经下落沿写数据,从手册的firgure2看是下落沿写数据,下落沿读数据,见下图
在数据手册的面孔中找到了,是下落沿读数据,和下落沿写数据的。如
看下寄存器树立规章,如下
先大约扫数引脚界说,我们先运行写下spi时序,粗略测试打印频频,
#include /* define pin*/ #define mosi_h printf(" mosi h ") #define mosi_l printf(" mosi l ") #define cs_h printf("cs hrn") #define cs_l printf("cs lrn") #define sclk_h printf(" sclk h ") #define sclk_l printf("sclk lrn") #define hal_delay(x) printf("delay_%dms rn",x) //declare function int32_t SPI_Write_Read(int32_t Data); int main() { int32_t rdata; rdata=SPI_Write_Read(0x55aaffff); printf("%x",rdata); return 0; } int32_t SPI_Write_Read(int32_t Data) { int8_t i; int32_t rdata=0; //supporting role int32_t misodata=0x0000aaaa; int8_t miso=0; //initial pin state sclk_h; mosi_l; cs_h; hal_delay(1); //start transferring data cs_l; for (i = 0; i 32; i++) { sclk_h; if(Data&0x80000000) { mosi_h; } else mosi_l; // supporting role miso=misodata&0x00000001; misodata > >=1; // Equivalent to rdata=rdata|miso rdata|=miso; rdata1; sclk_l; Data1; } return rdata; }
后果则如下所示
允洽我们的预期,可是adx122需要80个时钟,这边已经不够的,这里只消32个时钟,打印的数据带入excel 不言而谕这里得出的论断即是55aaffff即是我们写的值,回读的aaaa0000亦然我们写入的值,是以在这一步是莫得问题的,链接向下
80个时钟要补全的东西有许多,要是要回读的话。我们就不行平直用int32-t了。
肛交 推特So 我们要用指针,界说一个数组,将读追想的数据传入数组,在复返扫数数组,使用指针去经受。
#include/* define pin*/ #define mosi_h printf(" mosi h ") #define mosi_l printf(" mosi l ") #define cs_h printf("cs hrn") #define cs_l printf("cs lrn") #define sclk_h printf(" sclk h ") #define sclk_l printf("sclk lrn") #define hal_delay(x) printf("delay_%dms rn",x) //declare function int32_t* SPI_Write_Read(int32_t Data); int main() { int32_t *rdatas; rdatas=SPI_Write_Read(0x55aaffff); printf("%xrn",*rdatas); printf("%xrn",*(rdatas+1)); printf("%xrn",*(rdatas+2)); return 0; } int32_t* SPI_Write_Read(int32_t Data) { int8_t i; static int32_t rdata[11]; //supporting role int32_t misodata=0x0000aaaa; int8_t miso=0; //initial pin state sclk_h; mosi_l; cs_h; hal_delay(1); //start transferring data cs_l; for (i = 0; i 32; i++) { sclk_h; if(Data&0x80000000) { mosi_h; } else mosi_l; // supporting role miso=misodata&0x00000001; misodata > >=1; // Equivalent to rdata=rdata|miso rdata[0]|=miso; rdata[0]1; sclk_l; Data1; } rdata[1]=0x1fffffff; rdata[2]=0x2fffffff; rdata[3]=0x3fffffff; rdata[4]=0x4fffffff; rdata[5]=0x5fffffff; rdata[6]=0x6fffffff; rdata[7]=0x7fffffff; return rdata; }
在这里看到和我们的设定是相似的
因为miso在这里我们是模拟的,是倒着来的看起来有点奇怪,本色用芯片没这么的问题。
望望模拟的后果。
SPI的粗略驱动代码就整结束,我方再去对寄存器就好了。
#include/* define pin*/ #define mosi_h printf(" mosi h ") #define mosi_l printf(" mosi l ") #define cs_h printf("cs hrn") #define cs_l printf("cs lrn") #define sclk_h printf(" sclk h ") #define sclk_l printf("sclk lrn") #define hal_delay(x) printf("delay_%dms rn",x) //declare function u_int32_t* SPI_Write_Read(u_int32_t Data); int main() { u_int32_t *rdatas; rdatas=SPI_Write_Read(0x55aaffff); printf("%xrn",*rdatas); printf("%xrn",*(rdatas+1)); printf("%xrn",*(rdatas+2)); return 0; } u_int32_t* SPI_Write_Read(u_int32_t Data) { int i; static u_int32_t rdata[4]={0x00000000,0x00000000, 0x00000000,0x00000000}; //supporting role u_int32_t temp; u_int32_t misodata=0x10000001; u_int32_t miso; //initial pin state sclk_h; mosi_l; cs_h; hal_delay(1); //start transferring data cs_l; temp=0; for (i = 0; i 32; i++) { sclk_h; if(Data&0x80000000) { mosi_h; } else { mosi_l; } // supporting role miso=misodata&0x00000001; misodata > >=1; // Equivalent to rdata=rdata|miso rdata[0]1; rdata[0]|=miso; sclk_l; Data1; } //rdata[1] misodata=0x80000008; // for (i = 0; i 32;i++) { sclk_h; // supporting role miso=misodata&0x00000001; misodata > >=1; // Equivalent to rdata=rdata|miso rdata[1]1; rdata[1]|=miso; sclk_l; } misodata=0x20000002; //rdata[2] for (i = 0; i 16; i++) { sclk_h; // supporting role miso=misodata&0x00000001; misodata > >=1; // Equivalent to rdata=rdata|miso rdata[2]1; rdata[2]|=miso; sclk_l; } cs_h; return rdata; }
刚好80个沿
今天就先聊到这了.丝袜美腿视频