OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4738|回复: 42

stm32与LEPTON 模块通信不了

[复制链接]

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
发表于 2018-9-12 09:02:50 | 显示全部楼层 |阅读模式
20金钱
      有没有用过Lepton 红外摄像头模块的,他是I2C控制,SPI数据传输的,在于STM32F4连接之后,但是在初始化的时候,和I2C一直通信不上,一直就是没有应答,应答位一直为1,没有回应,示波器也看了,请求做过的不吝赐教,我忙了一周没结果。


Lepton25.pdf

3.19 MB, 下载次数: 40

LeptonIDD.pdf

2.22 MB, 下载次数: 180

最佳答案

查看完整内容[请看2#楼]

[mw_shl_code=applescript,true]//3õê¼»ˉIIC void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//ê1ÄüGPIOBê±Öó //GPIOB8,B93õê¼»ˉéèÖà GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨ê ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-12 09:02:51 | 显示全部楼层
高山仰止 发表于 2018-9-12 09:15
帮顶。你可以帮你的IIC那块的程序贴上来看看,描述的具体点,说一下你都做了什么尝试

[mw_shl_code=applescript,true]//3õê¼»ˉIIC
void IIC_Init(void)
{                       
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//ê1ÄüGPIOBê±Öó

  //GPIOB8,B93õê¼»ˉéèÖÃ
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
  GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
        IIC_SCL=1;
        IIC_SDA=1;
}
//2úéúIICÆeê¼DÅoÅ
void IIC_Start(void)
{
        SDA_OUT();     //sdaÏßêä3ö
        IIC_SDA=1;                    
        IIC_SCL=1;
        delay_us(4);
        IIC_SDA=0;//START:when CLK is high,DATA change form high to low
        delay_us(4);
        IIC_SCL=0;//ÇˉסI2C×üÏߣ¬×¼±¸·¢Ëí»ò½óêÕêy¾Y
}          
//2úéúIICí£Ö1DÅoÅ
void IIC_Stop(void)
{
        SDA_OUT();//sdaÏßêä3ö
        IIC_SCL=0;
        IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
        delay_us(4);
        IIC_SCL=1;
        IIC_SDA=1;//·¢ËíI2C×üÏß½áêøDÅoÅ
        delay_us(4);                                                                  
}
//μè′yó|′eDÅoÅμ½à′
//·μ»ØÖμ£o1£¬½óêÕó|′eê§°ü
//        0£¬½óêÕó|′e3é1|
u8 IIC_Wait_Ack(void)
{
        u8 ucErrTime=0;
        SDA_IN();      //SDAéèÖÃÎaêäèë  
        IIC_SDA=1;delay_us(1);          
        IIC_SCL=1;delay_us(1);         
        while(READ_SDA)
        {
                ucErrTime++;
                if(ucErrTime>250)
                {
                        IIC_Stop();
                        return 1;
                }
        }
        IIC_SCL=0;//ê±Öóêä3ö0           
        return 0;  
}

u8 Lepton_ReadOneByte(u16 ReadAddr)
{                                  
        u8 temp=0;       
u8 i;       
    IIC_Start();  
        if(1)
        {
                IIC_Send_Byte(0x2A);           //·¢ËíD′Ãüáî
                i=IIC_Wait_Ack();
                if(i==1)
                        printf("ack fail");
                IIC_Send_Byte((ReadAddr>>8)&0xFF);//·¢Ëí¸ßμØÖ·            
        }else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));   //·¢&#203;í&#198;÷&#188;tμ&#216;&#214;·0XA0,D′êy&#190;Y           
        IIC_Wait_Ack();
    IIC_Send_Byte(ReadAddr&0xFF);   //·¢&#203;íμíμ&#216;&#214;·
        IIC_Wait_Ack();            
        IIC_Start();                     
        IIC_Send_Byte(0x2B);           //&#189;&#248;è&#235;&#189;óê&#213;&#196;£ê&#189;                          
        IIC_Wait_Ack();         
    temp=IIC_Read_Byte(0);                  
    IIC_Stop();//2úéúò&#187;&#184;&#246;í£&#214;1ì&#245;&#188;t            
        return temp;
}[/mw_shl_code]

初始化感觉没问题,应该是传感器有哪个点没get到,卡住了
回复

使用道具 举报

6

主题

359

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1604
金钱
1604
注册时间
2017-12-18
在线时间
173 小时
发表于 2018-9-12 09:15:35 | 显示全部楼层
帮顶。你可以帮你的IIC那块的程序贴上来看看,描述的具体点,说一下你都做了什么尝试
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-13 13:16:02 | 显示全部楼层
已经解决,是自己板子有问题。
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-17 09:52:35 | 显示全部楼层
樓主, 你有它I2C的 register table 嗎

我最近也要點這個感測器, 手邊的文檔看它是C SDK,

只是我看了SDK找不到跟I2C相關的檔案在哪裡, 不曉得怎麼移植

回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-17 11:37:01 | 显示全部楼层
civic7366 发表于 2018-9-17 09:52
樓主, 你有它I2C的 register table 嗎

我最近也要點這個感測器, 手邊的文檔看它是C SDK,

官网上有,你QQ我发你
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-17 13:29:09 | 显示全部楼层
关山难越 发表于 2018-9-17 11:37
官网上有,你QQ我发你

請問是這份文檔嗎?
Software_IDD_Rev200_4-4-17.pdf

我是台灣的沒有QQ
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-17 14:29:18 | 显示全部楼层
civic7366 发表于 2018-9-17 13:29
請問是這份文檔嗎?
Software_IDD_Rev200_4-4-17.pdf

https://github.com/maxritter/DIY-Thermocam/tree/master/Datasheets

里面有一个LEPTON_IDD文档,或者你邮箱我发你就行了
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-17 14:40:45 | 显示全部楼层
关山难越 发表于 2018-9-17 14:29
https://github.com/maxritter/DIY-Thermocam/tree/master/Datasheets

里面有一个LEPTON_IDD文档,或 ...

對..這份文件後面都在講 C SDK

請問你有移值SDK對它初始化嗎?

還不知道怎麼下手 連I2C要讀哪個address作測試都不清楚

繼續翻看中...感謝您~~~
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-17 15:07:55 | 显示全部楼层
civic7366 发表于 2018-9-17 14:40
對..這份文件後面都在講 C SDK

請問你有移值SDK對它初始化嗎?

你只要把I2C的四根线连上,I2C的地址选对,然后用标准库函数初始化I2C,不是非要用SDK封装的,你要是想用它的SDK我也可以发你一份,不过那CPU是F103的,不知道和你的CPU是否一样,我的是407,我就没有用它的SDK,自己写标准库,然后往I2C的某个寄存器写值,再读出来,如果OK,那说明你就通了I2C,
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-17 17:19:34 | 显示全部楼层
對... I2C可以通 只是不知道怎麼下命令

還在研究格式怎麼填
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-18 17:27:43 | 显示全部楼层
後來發現...原來上電後SPI就可以讀到影像了

I2C那邊不需要初始化,
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-18 20:03:50 | 显示全部楼层
civic7366 发表于 2018-9-18 17:27
後來發現...原來上電後SPI就可以讀到影像了

I2C那邊不需要初始化,

确实如此,lepton在出厂的时候有默认的配置I2C,只是I2C不调通的话后面增益图像的一些操作完成不了。你的SPI通上之后直接就可以读到数据么,不会有丢失数据包的现象?或者第二个字节匹配不上的现象么?
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-18 20:06:28 | 显示全部楼层
civic7366 发表于 2018-9-18 17:27
後來發現...原來上電後SPI就可以讀到影像了

I2C那邊不需要初始化,

台湾同胞一般使用什么联系方式,一起交流,这个图像想清晰还有好长的路要走
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-19 10:03:25 | 显示全部楼层
我沒有QQ阿...不過我滿常上這個論壇

我影像是清晰的, 把它預設的14bit處理成8bit就好

回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-19 10:06:03 | 显示全部楼层
給你參考 我都直接用原子的函數拼湊的

u16 poll_discard;

void ReadLeptonOneFrame(void)
{
        u8 i,j;
        u16 id;
        u32 average=0;
       
        SPI2->CR1 |= 1<<6;  
                                               
        do
        {
                for(j=0; j<82; j++)
                        VoSPI_data[0][0][j] = SPI2_ReadWriteByte(0);
                       
                id = VoSPI_data[0][0][0]&0x0FF0;
               
                poll_discard++;
               
        }while( id == 0x0FF0 ); //Examine Id field, identifying a discard packet.
       
       
        poll_discard=0;
       
        for(i=1; i<60; i++)
        {
                for(j=0; j<82; j++)
                {
                        VoSPI_data[0][i][j] = SPI2_ReadWriteByte(0);
                       
                        if(j>1)
                                average += VoSPI_data[0][i][j];
                }
        }
       
       
        SPI2->CR1 &= ~(1<<6);  
       
        Frame_Mean = average/(59*80);
}



u16 top ;
u16 bottom;
void LCD_updata(void)
{
                u8 c, r;
   // u16 data;       
       
        top = Frame_Mean + 1023;
        bottom = Frame_Mean - 1024;
       
       
        for(r=0; r<60; r++)
        {
                for(c=0; c<80; c++)
                {       
                               
                        if(VoSPI_data[0][r][c+2] > top)
                        {
                                VoSPI_data[0][r][c+2] = top;
                        }
                        else if(VoSPI_data[0][r][c+2] < bottom)
                        {
                                VoSPI_data[0][r][c+2] = bottom;
                        }
                               
                        VoSPI_data[0][r][c+2]-=bottom;
                               
                        LCD_DATA[r][c] = VoSPI_data[0][r][c+2]>>3;
                       
                }
        }
       
       
}


void LCD_preview_320(void)
{
        u32 index=0, rindex=0;
        u32        cursor_r = 0 ;
       
        for(rindex=0; rindex<240; rindex++)
        {
                cursor_r = rindex + 80;
                LCD_SetCursor( 80 ,cursor_r);        //3]&#184;m¥ú&#188;D|ì&#184;m
                LCD_WriteRAM_Prepare();       //&#182;}&#169;l&#188;g¤JGRAM       
               
                for(index=0;index<320;index++)
                {       
                        u8 data = LCD_DATA[rindex/4][index/4];       
                        LCD->LCD_RAM = LUT_RGB565[data];                //¨êimage data                
                }
        }
}
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-19 10:06:38 | 显示全部楼层
union TypeRGBData
{
        u16 RGB565;
        struct Type_RGB565 bit;
}RGB565test;


u16 LUT_RGB565[256]; //lookup table


const u8 Fire_LUT_RGB[256][3]=
{
0,0,0,
0,0,7,
0,0,15,
0,0,22,
0,0,30,
0,0,38,
0,0,45,
0,0,53,
0,0,61,
0,0,65,
0,0,69,
0,0,74,
0,0,78,
0,0,82,
0,0,87,
0,0,91,
1,0,96,
4,0,100,
7,0,104,
10,0,108,
13,0,113,
16,0,117,
19,0,121,
22,0,125,
25,0,130,
28,0,134,
31,0,138,
34,0,143,
37,0,147,
40,0,151,
43,0,156,
46,0,160,
49,0,165,
52,0,168,
55,0,171,
58,0,175,
61,0,178,
64,0,181,
67,0,185,
70,0,188,
73,0,192,
76,0,195,
79,0,199,
82,0,202,
85,0,206,
88,0,209,
91,0,213,
94,0,216,
98,0,220,
101,0,220,
104,0,221,
107,0,222,
110,0,223,
113,0,224,
116,0,225,
119,0,226,
122,0,227,
125,0,224,
128,0,222,
131,0,220,
134,0,218,
137,0,216,
140,0,214,
143,0,212,
146,0,210,
148,0,206,
150,0,202,
152,0,199,
154,0,195,
156,0,191,
158,0,188,
160,0,184,
162,0,181,
163,0,177,
164,0,173,
166,0,169,
167,0,166,
168,0,162,
170,0,158,
171,0,154,
173,0,151,
174,0,147,
175,0,143,
177,0,140,
178,0,136,
179,0,132,
181,0,129,
182,0,125,
184,0,122,
185,0,118,
186,0,114,
188,0,111,
189,0,107,
190,0,103,
192,0,100,
193,0,96,
195,0,93,
196,1,89,
198,3,85,
199,5,82,
201,7,78,
202,8,74,
204,10,71,
205,12,67,
207,14,64,
208,16,60,
209,19,56,
210,21,53,
212,24,49,
213,27,45,
214,29,42,
215,32,38,
217,35,35,
218,37,31,
220,40,27,
221,43,23,
223,46,20,
224,48,16,
226,51,12,
227,54,8,
229,57,5,
230,59,4,
231,62,3,
233,65,3,
234,68,2,
235,70,1,
237,73,1,
238,76,0,
240,79,0,
241,81,0,
243,84,0,
244,87,0,
246,90,0,
247,92,0,
249,95,0,
250,98,0,
252,101,0,
252,103,0,
252,105,0,
253,107,0,
253,109,0,
253,111,0,
254,113,0,
254,115,0,
255,117,0,
255,119,0,
255,121,0,
255,123,0,
255,125,0,
255,127,0,
255,129,0,
255,131,0,
255,133,0,
255,134,0,
255,136,0,
255,138,0,
255,140,0,
255,141,0,
255,143,0,
255,145,0,
255,147,0,
255,148,0,
255,150,0,
255,152,0,
255,154,0,
255,155,0,
255,157,0,
255,159,0,
255,161,0,
255,162,0,
255,164,0,
255,166,0,
255,168,0,
255,169,0,
255,171,0,
255,173,0,
255,175,0,
255,176,0,
255,178,0,
255,180,0,
255,182,0,
255,184,0,
255,186,0,
255,188,0,
255,190,0,
255,191,0,
255,193,0,
255,195,0,
255,197,0,
255,199,0,
255,201,0,
255,203,0,
255,205,0,
255,206,0,
255,208,0,
255,210,0,
255,212,0,
255,213,0,
255,215,0,
255,217,0,
255,219,0,
255,220,0,
255,222,0,
255,224,0,
255,226,0,
255,228,0,
255,230,0,
255,232,0,
255,234,0,
255,235,4,
255,237,8,
255,239,13,
255,241,17,
255,242,21,
255,244,26,
255,246,30,
255,248,35,
255,248,42,
255,249,50,
255,250,58,
255,251,66,
255,252,74,
255,253,82,
255,254,90,
255,255,98,
255,255,105,
255,255,113,
255,255,121,
255,255,129,
255,255,136,
255,255,144,
255,255,152,
255,255,160,
255,255,167,
255,255,175,
255,255,183,
255,255,191,
255,255,199,
255,255,207,
255,255,215,
255,255,223,
255,255,227,
255,255,231,
255,255,235,
255,255,239,
255,255,243,
255,255,247,
255,255,251,
255,255,255,
255,255,255,
255,255,255,
255,255,255,
255,255,255,
255,255,255,
255,255,255,
255,255,255
};


//RGB888 to RGB565
void LUT_Init(void)
{
        u16 i;
       
        for(i=0; i<256 ;i++)
        {
                RGB565test.bit.r = Fire_LUT_RGB[i][0]>>3;
                RGB565test.bit.g = Fire_LUT_RGB[i][1]>>2;
                RGB565test.bit.b = Fire_LUT_RGB[i][1]>>3;
                LUT_RGB565[i] = RGB565test.RGB565;
        }

}
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-19 10:07:38 | 显示全部楼层
本帖最后由 civic7366 于 2018-9-19 10:09 编辑

因為我工作常常搞熱像感測器...

所以處理這類訊號 算熟了...
只是我是要試他測溫功能...

所以I2C那邊的功能還是要繼續看...
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-19 10:30:30 | 显示全部楼层
civic7366 发表于 2018-9-19 10:07
因為我工作常常搞熱像感測器...

所以處理這類訊號 算熟了...

你的SPI配置可以发我一下么,I2C的代码我是调的OK了,读取接收都没有问题,我发给你哈
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-19 10:36:40 | 显示全部楼层
void SPI2_MASTER_Init(void)
{
        u16 tempreg=0;
        RCC->AHB1ENR |=1<<1;  //enable PB       
        RCC->AHB1ENR |=1<<2;  //enable PC       
        RCC->APB1ENR |=1<<14; //ebanle SPI2
       
        GPIO_Set(GPIOB,PIN12,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
        GPIO_Set(GPIOB,PIN13,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
        GPIO_Set(GPIOB,PIN14,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
        //GPIO_Set(GPIOC, PIN3,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
       
        GPIO_AF_Set(GPIOB,12,5); //PB12 SPI2_NSS
        GPIO_AF_Set(GPIOB,13,5); //PB13 SPI2_SCK
        GPIO_AF_Set(GPIOB,14,5); //PB14 SPI2_MISO
        //GPIO_AF_Set(GPIOC, 3,5); //PC3  SPI2_MOSI
       
       

       
        RCC->APB1RSTR |= 1<<14;
        RCC->APB1RSTR &= ~(1<<14);
       
        //DMA1_SPI2_TX();
        //SPI2->CR2 |= 1<<0; //enable Rx buffer DMA
        //SPI2->CR2 |= 1<<1; //enable Tx buffer DMA
       
        SPI2->CR2 |= 1<<2;   //enable SS output
        //SPI2->CR2 |= 1<<4; //TI mode
       
       
       
        tempreg |= 0<<15;   //2-line unidirectional data mode selected
        //tempreg |= 0<<14;  //Output disabled (bidirectional mode)
        tempreg |= 1<<11;         //16-bit data frame format
        //tempreg |= 1<<10;         //read only
       
        //tempreg |= 1<<9;  //SW nss
        //tempreg |= 0<<8;  //Internal slave select(SW)
       
        tempreg |= 0<<7;  //MSB first
        //tempreg |= 1<<6;  //enable SPI
        tempreg |= 1<<3;  //Baud rate control (pclk/4)
        tempreg |= 1<<2;  //master
        tempreg |= 1<<1;  //idle clk high
        tempreg |= 1<<0;  //CPHA second edge
       
        SPI2->CR1 = tempreg;
       
        //SPI2_ReadWriteByte(0xff);
       
}
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-19 10:38:31 | 显示全部楼层
本帖最后由 civic7366 于 2018-9-19 10:40 编辑

請問你拿這個感測器幹嘛用的...

我是老闆一值想作測溫 到處拿感測器樣品來試
I2C那邊是難在他功能太多...單筆資料寫入讀取 我也OK了
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-19 10:57:47 | 显示全部楼层
civic7366 发表于 2018-9-19 10:38
請問你拿這個感測器幹嘛用的...

我是老闆一值想作測溫 到處拿感測器樣品來試

我是要SPI数据传过来的数据转为图像显示,可是我的数据一直不对,丢包和同步的问题一直存在,你的lepton的初始化是怎样的,就没有数据不对的情况么,我的是
leptondata[161] is ff
leptondata[162] is ff
leptondata[163] is ff
leptondata[0] is 0
leptondata[1] is 0
leptondata[2] is 0
leptondata[3] is 0
leptondata[4] is 0
leptondata[5] is 0
leptondata[6] is 0
leptondata[7] is 0
leptondata[8] is 0
leptondata[9] is 0
leptondata[10] is 0
leptondata[11] is 0
leptondata[12] is 0
leptondata[13] is 0
leptondata[14] is 0
leptondata[15] is 0
我的经常读出来是0,而且第二个字节数据不是递增的,应该是1-60递增
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-19 11:01:14 | 显示全部楼层
我沒初始化它的...

你看看

void LEPTON_Init(void)
{
        u16 data=0;
       
        I2C_SW_Init();
       
        delay_us(5000000); //wait 950ms after power & auto FFC
       
       
       
        //LEPTON_WriteOneByte(0,0); //Power on
       
       
       
        do         
        {
                data = LEPTON_ReadOneByte(0x0002); //read 0x0002
                data &= (1<<2); // polling bit2
        }while(!data);
       
       
       
        do         
        {
                data = LEPTON_ReadOneByte(0x0002); //read 0x0002
                data &= (1<<0); // polling bit0
        }while(data);
       
       
}
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-19 11:02:27 | 显示全部楼层
本帖最后由 civic7366 于 2018-9-19 11:04 编辑

跟I2C那邊設定無關吧... 你是不是硬體有問題

而且它VOSPI那份有講

它一開始是丟 沒用的資料包 ID是0x0FF0就表示沒用 這用來同步的

等收到ID是0x0000之後 才會開始遞增
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-19 13:34:14 | 显示全部楼层
civic7366 发表于 2018-9-19 11:02
跟I2C那邊設定無關吧... 你是不是硬體有問題

而且它VOSPI那份有講

跟I2C的确是无关,我也没有去做I2C相关的操作,我只是连接了VCC GND MISO CLK CS五根线,然后按照你的spi初始化之后,显示的结果依旧不对,第二个字节自始至终都是0
leptondata[0] is 10
leptondata[1] is 0
leptondata[2] is c2
leptondata[3] is c6
leptondata[4] is 1f
leptondata[5] is bb
leptondata[6] is 1f
leptondata[7] is bf
leptondata[8] is 1f
leptondata[9] is b9

leptondata[0] is 50
leptondata[1] is 0
leptondata[2] is be
leptondata[3] is f2
leptondata[4] is 1f
leptondata[5] is b8
leptondata[6] is 1f
leptondata[7] is bc
leptondata[8] is 1f
leptondata[9] is b8

leptondata[0] is 10
leptondata[1] is 0
leptondata[2] is cc
leptondata[3] is 4c
leptondata[4] is 1f
leptondata[5] is bc
leptondata[6] is 1f
leptondata[7] is be
leptondata[8] is 1f
leptondata[9] is b9


回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-19 14:11:44 | 显示全部楼层
你在看看 我已經在LCD上成像了

公司網路上傳是封鎖的, 不然可以傳張圖片
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-19 14:59:17 | 显示全部楼层
civic7366 发表于 2018-9-19 14:11
你在看看 我已經在LCD上成像了

公司網路上傳是封鎖的, 不然可以傳張圖片

你用的是stm32的CPU,lepton是80*60的么,你能把工程发我一份么,这个算机密么,
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-19 16:24:51 | 显示全部楼层
我沒法上傳資料, USB寫入也被封鎖 只能貼文字

我用探索者試點的, 不過我代碼就上面貼的那樣了

SPI初始化後, 讀取有效封包 60筆 然後不檢查CRC

直接把圖像資料14bit轉8bit 套用假色表轉RGB565丟到LCD上

回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-20 14:03:57 | 显示全部楼层
civic7366 发表于 2018-9-19 16:24
我沒法上傳資料, USB寫入也被封鎖 只能貼文字

我用探索者試點的, 不過我代碼就上面貼的那樣了

        do
        {
                for(j=0; j<82; j++)
                        VoSPI_data[0][0][j] = SPI2_ReadWriteByte(0);
                        
                id = VoSPI_data[0][0][0]&0x0FF0;
               
                poll_discard++;
               
        }while( id == 0x0FF0 ); //Examine Id field, identifying a discard packet.

我运行程序之后,走到这里就出不来了,后面一直都是前2个字节都是0X0FF0,spi的配置我除了和你不一样的是spi8位数据传输,我的片选脚CS用的是一个普通的IO,没有用复用功能NSS,其他的都是一样的,但是还是数据出错,很是困惑
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-20 17:36:00 | 显示全部楼层
你能找到discard封包嗎, 先整個BUFF下去找

在VOSPI那份文件 P.13,

我一開始也是收到這個, 只是紅色部分跟datasheet寫得不一樣而已

1fff ffff dcd0 dcad dcd2 dcad dcd4 dcad dcd6 dcad 0000 0000 0000 0000 0000 2ebc 3b00 1042 085e 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-21 16:36:46 | 显示全部楼层
civic7366 发表于 2018-9-20 17:36
你能找到discard封包嗎, 先整個BUFF下去找

在VOSPI那份文件 P.13,

leptondata[0][0] is 3f
leptondata[0][1] is 255
leptondata[1][0] is 30
leptondata[1][1] is 0
leptondata[2][0] is 0
leptondata[2][1] is 1
leptondata[3][0] is 0
leptondata[3][1] is 2
leptondata[4][0] is 0
leptondata[4][1] is 3
leptondata[5][0] is 40
leptondata[5][1] is 4
leptondata[6][0] is 10
leptondata[6][1] is 5
leptondata[7][0] is 0
leptondata[7][1] is 6
leptondata[8][0] is 0
leptondata[8][1] is 7
leptondata[9][0] is 40
leptondata[9][1] is 8
leptondata[10][0] is 0
leptondata[10][1] is 9
leptondata[11][0] is 0
leptondata[11][1] is 10
leptondata[12][0] is 40
leptondata[12][1] is 11
leptondata[13][0] is 0
leptondata[13][1] is 12
leptondata[14][0] is 30
leptondata[14][1] is 13
leptondata[15][0] is 70
leptondata[15][1] is 14
leptondata[16][0] is 50
leptondata[16][1] is 15
leptondata[17][0] is 10
leptondata[17][1] is 16
leptondata[18][0] is 60
leptondata[18][1] is 17
leptondata[19][0] is 40
leptondata[19][1] is 18
leptondata[20][0] is 20
leptondata[20][1] is 19
leptondata[21][0] is 0
leptondata[21][1] is 20
leptondata[22][0] is 0
leptondata[22][1] is 21
leptondata[23][0] is 0
leptondata[23][1] is 22
leptondata[24][0] is 0
leptondata[24][1] is 23
leptondata[25][0] is 0
leptondata[25][1] is 24
leptondata[26][0] is 0
leptondata[26][1] is 25
leptondata[27][0] is 0
leptondata[27][1] is 26
leptondata[28][0] is 0
leptondata[28][1] is 27
leptondata[29][0] is 0
leptondata[29][1] is 28
leptondata[30][0] is 0
leptondata[30][1] is 29
leptondata[31][0] is 0
leptondata[31][1] is 30
leptondata[32][0] is 0
leptondata[32][1] is 31
leptondata[33][0] is 0
leptondata[33][1] is 32
leptondata[34][0] is 0
leptondata[34][1] is 33
leptondata[35][0] is 0
leptondata[35][1] is 34
leptondata[36][0] is 0
leptondata[36][1] is 35
leptondata[37][0] is 0
leptondata[37][1] is 36
leptondata[38][0] is 0
leptondata[38][1] is 37
leptondata[39][0] is 0
leptondata[39][1] is 38
leptondata[40][0] is 0
leptondata[40][1] is 39
leptondata[41][0] is 0
leptondata[41][1] is 40
leptondata[42][0] is 0
leptondata[42][1] is 41
leptondata[43][0] is 0
leptondata[43][1] is 42
leptondata[44][0] is 0
leptondata[44][1] is 43
leptondata[45][0] is 0
leptondata[45][1] is 44
leptondata[46][0] is 0
leptondata[46][1] is 45
leptondata[47][0] is 0
leptondata[47][1] is 46
leptondata[48][0] is 0
leptondata[48][1] is 47
leptondata[49][0] is 0
leptondata[49][1] is 48
leptondata[50][0] is 0
leptondata[50][1] is 49
leptondata[51][0] is 0
leptondata[51][1] is 50
leptondata[52][0] is 0
leptondata[52][1] is 51
leptondata[53][0] is 0
leptondata[53][1] is 52
leptondata[54][0] is 0
leptondata[54][1] is 53
leptondata[55][0] is 0
leptondata[55][1] is 54
leptondata[56][0] is 0
leptondata[56][1] is 55
leptondata[57][0] is 0
leptondata[57][1] is 56
leptondata[58][0] is 0
leptondata[58][1] is 57
leptondata[59][0] is 0
leptondata[59][1] is 58
我现在有数据了,但是每次都是少了一个字节的数据,只有0-58,,第一行的数据莫名被和谐了,
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-26 10:36:29 | 显示全部楼层
civic7366 发表于 2018-9-20 17:36
你能找到discard封包嗎, 先整個BUFF下去找

在VOSPI那份文件 P.13,

请问你的测温搞定了么
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-26 10:44:22 | 显示全部楼层
嗯 上週就搞定了...

透過I2C 把Telemertry叫出來, VoSPI那邊每個frame會多收3個封包
裡面就有溫度資料跟ROI座標了了...

唉...我老闆要我抄它的計算溫度方法, 我快暈倒了...
它就是個黑箱子...

回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-26 10:45:17 | 显示全部楼层
关山难越 发表于 2018-9-26 10:36
请问你的测温搞定了么

你是做啥工作的? 這個能拿來幹嘛?

回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-26 13:33:57 | 显示全部楼层
civic7366 发表于 2018-9-26 10:44
嗯 上週就搞定了...

透過I2C 把Telemertry叫出來, VoSPI那邊每個frame會多收3個封包

首先把SYS Telemetry Enable State 使能
SDK Module ID: SYS 0x0200
SDK Command ID: Base 0x18
With Get 0x18
With Set 0x19
SDK Data Length: Get   2        size of an Enum on a 32-bit machine
                             Set    2        size of an Enum on a 32-bit machine

然后往命令寄存器里0x0004里写入0x2219就是把Telemertry设置好了,然后SPI传输出来的数据就会多3行是这个意思么,
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-26 13:36:33 | 显示全部楼层
civic7366 发表于 2018-9-26 10:45
你是做啥工作的? 這個能拿來幹嘛?

我是做软件的,这个用在检测设备什么地方发热,温度最高,判断板卡坏在哪里
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-26 14:57:30 | 显示全部楼层
       
#define        SYS_TELE_EN_STATE_GET                                        ( MODULE_ID_SYS|0x18 )        // TELEMETRY_DISABLED=0, TELEMETRY_ENABLED=1        
#define        SYS_TELE_EN_STATE_SET                                        ( MODULE_ID_SYS|0x19 )
#define        SYS_TELE_EN_STATE_LENGTH         2

u8 LEPTON_CCI_Write( COMMAND_TYPE_PTR command )
{
                u16 status;
                s8  result;
       
                do
                {
                        status =        LEPTON_ReadOneData(STATUS_REG);
                } while(status&0x01); //polling busy bit
               
                LEPTON_WriteData(DATA0_REG, command->Length, command->Data);
               
                LEPTON_WriteOneData(DATA_LENGTH_REG, command->Length);
                LEPTON_WriteOneData(COMMAND_ID_REG, command->ComId);
               
                do
                {
                        status =        LEPTON_ReadOneData(STATUS_REG);
                } while(status&0x01); //polling busy bit

                result = (status >> 8);
               
                return result;
}



        CCI_Struct.ComId = SYS_TELE_EN_STATE_SET;
                CCI_Struct.Length = SYS_TELE_EN_STATE_LENGTH;
                *(u32 *)&CCI_Struct.Data=1;
                LEPTON_CCI_Write(&CCI_Struct);
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-26 14:58:42 | 显示全部楼层
本帖最后由 civic7366 于 2018-9-26 15:00 编辑

它預設會在60~62包, 0~59是影像
原本就是TLINEAR mode 它的影像資料為16bit 代表絕對溫度
如果你是要直接應用抓高溫點...這個感測器很容易辦到

回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-26 15:06:28 | 显示全部楼层
如果你是要從整張圖下去找高溫區域....

不用打開TELEMETRY喔... 要自己寫算法整張圖下去找
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-28 17:33:50 | 显示全部楼层
civic7366 发表于 2018-9-26 15:06
如果你是要從整張圖下去找高溫區域....

不用打開TELEMETRY喔... 要自己寫算法整張圖下去找

你好,我现在发现了一个非常奇怪的现象:
我现在SPI获取数据完全OK,数据也是对的,第二个字节序列号(0-59),但是我在不小心的时候碰掉了CS这个引脚,出乎意料的是数据依旧在传输,也就是说连接到CPU的只有四根线:VDD GND CLLK MISO,但是通过SPI发出来的数据依旧是对的,而且序号也没有问题。这种情况很奇怪
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2018-9-28 18:22:53 | 显示全部楼层
不行阿...我把CS拔掉 畫面馬上錯亂...
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-29 08:41:46 | 显示全部楼层
civic7366 发表于 2018-9-28 18:22
不行阿...我把CS拔掉 畫面馬上錯亂...

画面错乱,CS拔掉之后,那你的数据对么,第二个字节是不是从0-59递增,我的竟然还是对的数据,我感觉不太合乎常理
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-6-12
在线时间
9 小时
发表于 2020-7-24 17:51:37 | 显示全部楼层
老哥可以加个QQ吗  我最近也在搞Lepton3.5  有些问题想问问
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-30 01:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表