luaffy

    1. freebsder 发表于 2020-11-17 21:24 没权限加sudo啊,或者直接su到root去.
      谢谢大佬的指点 后来我在https://blog.csdn.net/wuyusheng314/article/details/78987351?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param这个文章的帮助下成功连接到了linux服务器,当然过程中还做了其他尝试,不确定是哪几步起了作用,总之是成功了 如果还有其他工程配置的问题,请原谅我可能会在这个帖子下打扰你 祝好
    2. 本帖最后由 luaffy 于 2020-11-16 11:26 编辑
      lcofjp 发表于 2020-11-16 08:36 ssh服务启动了吗?
      最后还是改用虚拟机,用的是连志安老师的搭建好环境的ubuntu 20.04 镜像 这样samba是开启了吧 samba配置如下—— 但是在Windows映射一步,显示拒绝访问
    3. lcofjp 发表于 2020-11-16 08:36 ssh服务启动了吗?
      ps -s | grep ssh 没有回应 service ssh start /etc/init.d/ssh start  也没有回应  
    4. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-11-09
      chunyang 发表于 2020-11-9 14:55 你这个回帖怎么读不全?
      我发现我也刷新不到,要点“只看该作者”才看得到,没搞懂为什么
    5. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-11-09
      chunyang 发表于 2020-10-26 13:24 你应该给出详细的电路图。
      前辈,我来交作业啦 下面是我“差一步美满”的波形图 造成我前期没读到正确的IO电平的原因有两个: 1、系统初始化后没有先写IO电平就读了。 需要先写引脚,置0或1,使锁存器储存了写的值,读的时候,DOUT能输出锁存的这个值。系统初始化的时候,锁存器里锁存的不知道什么值,所以试图读取IO电平的时候,MCU接收到的DOUT的比特位也就不能体现IO的实际电平。 在读取方向为输出的IO电平的时候,我有一个疑问:P9为浮空脚,只能读到0,为什么给P9写1,读到的就是1?外部低电平不能回流到内部的读寄存器?由于芯片手册没有相关内容,我去请教了制造商,他们的回复如下—— 我的理解是:当端口被配置为输出方向时,芯片内部的施密特触发功能已被关闭,导致输出状态下,IO的实际电平无法改变锁存器里锁存的值 2、时序不对 初始化时给7317的IO引脚写了相应的值,我发现,读取函数读到的值相对于我写的值,都往高字节顺推一个比特位,我调换了读取DOUT电平的顺序,如下—— 由于读DOUT之前读命令结尾SCLK有一个下降沿,所以这里的顺序可解释为: 在SCLK的下降沿可读到正确的数据,即DIN发读命令最后一位的同时,在这个SCLK下降沿,DOUT已经锁存了D15。 在手册上能找到对应的说明—— 而争议点第5页——DOUT在SCLK上升沿稳定。这句话是前期误导我的最主要的原因 另, 成功读取方向为输出的电平之后,需要读取方向为输入的电平。 这个部分我觉得芯片手册写得不够详细。看了几遍才注意到,P0输入高电平或者配置P0方向为逻辑输入都是同一个命令(0x01),下面的P1~P9也是一样,但是说明省略了。如果P0和P1之间加个“下同”之类的提示语,会好懂很多。 所以在初始化的时候,将需要配置的引脚写1,即将它配置成输入,才能读取到输入的电平 但是,读取P0总为1——在我给P0接地或者拉高时。单步调试下,发现第一次读取P0时是能读到正常的电平1的,说明我的读取代码有问题。 通过示波器发现(见最上面的波形图),在等待DOUT比特流的时候,DIN一直为0,等于DIN向7317发了一条写P0为0的命令,所以第二次读取p0的时候,p0已经被重置为方向为输出且输出为0的状态了,外部电压失效,所以不管我怎么拉高,读到的P0都是0。 故发完读命令后,DIN要拉高。   我菜得真实,很多地方走了弯路,谢谢前辈指导
    6. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-10-29
      chunyang 发表于 2020-10-26 13:24 你应该给出详细的电路图。
      现在输出引脚都上拉了,读取电平是为了检测充电电路是否行使功能,刚刚稍微整理了一下示波器图像,按我的理解时序没问题,但是电平是读错了的
    7. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-10-26
      chunyang 发表于 2020-10-26 11:42 MAX7317的输出是带锁存的,这当然要求IO在输入输出复用时必须先写入逻辑1,否则锁存会导致输出为0时的读 ...
      谢谢大佬那我试试看 (“推挽输出”是我手快打错了 那几个引脚一部分接到了DAC,一部分是蜂鸣器和LED,为了表示输出方向我简单地表示为LED)
    8. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-10-26
      啊...我有点乱 又查了一下,开漏输出的没有内部上拉电阻,但准双向口和真双向口的区别是有无内部上拉,那只能开漏输出的IO是真双向口 而真双向IO可直接读入读出   所以“在设置成输出的状态下,“每个APB2时钟IO引脚上的数据都会被采集到输入寄存器中”这话没错。但要想有效读取IO口状态,只有在开漏输出状态(并且要保证上次输出是1,有点“欲读先写”之意,以保证IO口能反映外部电路电平变化),这样读到的才是外部IO状态。”是指准IO口设置成开漏输出的时候,保证上次输出是1才能读取准IO状态? 那真双向IO即使在开漏输出时,可任意读取外部IO状态?
    9. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-10-26
      本帖最后由 luaffy 于 2020-10-26 10:49 编辑
      chunyang 发表于 2020-10-23 23:49 读取首先要搞清楚SPI接口的时序,然后就是对读出位的处理了,是纯粹的软件问题,与加上拉电阻无关。
      我好像遗漏了什么重要信息 我要读的IO是已经设置成输出状态了,网上查了一下,有这种解答“在设置成输出的状态下,“每个APB2时钟IO引脚上的数据都会被采集到输入寄存器中”这话没错。但要想有效读取IO口状态,只有在开漏输出状态(并且要保证上次输出是1,有点“欲读先写”之意,以保证IO口能反映外部电路电平变化),这样读到的才是外部IO状态。” 是不是MAX7317读取输出IO,需要“保证上次输出是1”,但推挽输出要输出1,还是要加上拉电阻才能读取?而且浮空引脚不能读取?恒输出0的引脚不能读取? (简单画了一下示意图)
    10. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-10-23
      damiaa 发表于 2020-10-23 16:33 前面发了读写位哦。要不要考虑一下每发一位后延时  芯片SPI时钟不一定有你单片机发的快。A15  其 ...
      谢谢指导,我下周一跑跑看
    11. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-10-23
      chunyang 发表于 2020-10-23 17:25 另外注意,输入、输出是两个概念。7317是IO扩展片,做输出时必须加上拉电阻,或者将负载接在输出与电源间。 ...
      谢谢前辈的耐心指导。- () 刚刚我又确认了一下,我们都认了要加电阻了,但是我必须搞出读取电平
    12. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-10-23
      chunyang 发表于 2020-10-23 17:03 任何板子都可以临时加元件。
      确实,可惜这么多板子加元件的话还是会令硬件部老大哥头疼的
    13. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-10-23
      刚刚有位前辈提了修改意见并附上了程序代码,由于和师傅在调试另一块板子耽搁了回复...没记住ID,我非常抱歉 谢谢前辈的意见,我没有加延时没有考虑到SPI时钟是我的失误,后面我加上了,还是没有读到正确的电平
    14. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-10-23
      chunyang 发表于 2020-10-23 16:51 自己在板子上用有脚电阻加就是,没什么难度,且未必需要加在芯片旁边,找方便的地方下手就是。
      啊...是商业用的板子
    15. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-10-23
      chunyang 发表于 2020-10-23 16:21 开漏输出型IO需要对电源加上拉电阻,这么设计的目的是为了长线传输和实现多种电平的匹配。
      感谢回复 主要是现在几块板子都已经定型了,想要用的引脚没有加上拉电阻,如果要改版的话工作量会比较大(不过我现在也差不多认了),就想解决一下读取电平的问题
    16. 小白求问:MAX7317如何读取P9~p0的电平 26/3755 国产芯片交流 2020-10-23
      本帖最后由 luaffy 于 2020-10-23 16:40 编辑 我可能是哪里理解错了 读取函数如下——   uint8_t MAX7317RxData[16]; void MAX7317_Read( unsigned char code, unsigned int data )        //形参data不用在意 {   unsigned char temp = code;      MAX7317_CLK_LOW();   MAX7317_CS_LOW();    //send A15                                ->拉高 读取模式   MAX7317_TX_HIGH();   MAX7317_CLK_HIGH();   MAX7317_CLK_LOW();   //send A14~A8   for ( unsigned char i = 0; i < 7; i++ )    {     if ( (code & 0x40) == 0 )      {       MAX7317_TX_LOW();     }     else      {       MAX7317_TX_HIGH();     }     MAX7317_CLK_HIGH();     MAX7317_CLK_LOW();     code = (code << 1);   }   //send D7~D0   for ( unsigned char i = 0; i < 8; i++ )    {     if ( (data & 0x80) == 0 )     {       MAX7317_TX_LOW();     }     else     {       MAX7317_TX_HIGH();     }     MAX7317_CLK_HIGH();     MAX7317_CLK_LOW();     data = (data << 1);   }   MAX7317_CS_HIGH();   MAX7317_CLK_LOW();     MAX7317_CS_LOW();   for ( unsigned char i = 0; i < 16; i++ )    {     __delay_cycles(16);     MAX7317_CLK_HIGH();     MAX7317_CLK_LOW();     MAX7317RxData = MAX7317_RX1();   }      //---------检查DOUT比特流-------------- //  MAX7317_CLK_LOW(); //  MAX7317_CS_LOW(); //   ////send A15                                ->拉高 读取模式 //  MAX7317_TX_HIGH(); //  MAX7317_CLK_HIGH(); //  MAX7317_CLK_LOW(); //  //send A14~A8 //  for ( unsigned char i = 0; i < 7; i++ )  //  { //    if ( (temp & 0x40) == 0 )  //    { //      MAX7317_TX_LOW(); //    } //    else  //    { //      MAX7317_TX_HIGH(); //    } //    MAX7317_CLK_HIGH(); //    MAX7317_CLK_LOW(); //    temp = (temp << 1); //  } //  //send D7~D0 //  for ( unsigned char i = 0; i < 8; i++ )  //  { //    if ( (data & 0x80) == 0 ) //    { //      MAX7317_TX_LOW(); //    } //    else //    { //      MAX7317_TX_HIGH(); //    } //    MAX7317_CLK_HIGH(); //    MAX7317_CLK_LOW(); //    data = (data << 1); //  } //   MAX7317_CS_HIGH(); //  MAX7317_CLK_LOW();   //  MAX7317_CS_LOW(); //  for ( unsigned char i = 0; i < 16; i++ )  //  { //   __delay_cycles(16); //   MAX7317_CLK_HIGH(); //    MAX7317_CLK_LOW(); //    MAX7317RxData = MAX7317_RX1(); //  } }
    17. 关于小白编写bootloader的那档事 23/4233 单片机 2020-09-08
      本帖最后由 luaffy 于 2020-9-8 14:39 编辑 map文件详解     MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方、任何时候使用,不需要有额外的程序进行支持。 查看函数的内存占用情况         如下图,<CODE>1所指的函数Flash_Read();地址为85FC - 8617 ,占0x1c bytes,被flashhandle 文件的Application()函数,EraseCode()函数和bootcmd文件的PcCmd_Process()函数调用。 查看程序全局符号         MAP文件和XCL文件中,重要符号含义如下——         DATA16_AN:外围文件映射         DATA16_I:通过从DATA16_ID复制初始化的数据/定义时有初始化的变量         DATA16_Z:定义时初始化为0的数据         CSTACK:栈         DATA16_C:常数,包括字符串         CSTART:程序启动代码         ISR_CODE:中断服务函数程序代码         DATA16_N:使用__no_init定义的数据/未在定义时初始化的变量         DATA16_HEAP:malloc和free使用的堆         TLS16_I:主线程的线程本地存储         DATA16_ID:数据初始化器         CODE:程序代码         ISR_CODE:中断服务函数程序代码         INTVEC:中断向量         RESET:复位中断向量         ISR_CODE:中断服务函数程序代码                  结合map文件、用户手册、内存窗口,可以了解到MSP430F247的内存划分情况。  外围文件映射(0x0000-0x01FF)         单片机预留0x0000-0x01FF地址放置外围映射数据,msp430f247只用了0x0000-0x01A8,细划分为——         特殊功能寄存器SFR(0x0000-0x0003),MAP: DATA16_AN         外围文件映射/寄存器(0x0004-0x01A8),MAP:DATA16_AN RAM(0x0200-0x09FF)         RAM镜像Mirrired (0x1100-0x18FF)数据的拷贝 未知数据(0x0A00-0x0BFF)         大小正好为512bytes,一个扇区,写满FF 3F BSL(0x0C00-0x0FFF)         固化的bootloader information memory(0x1000-0x10FF)         INFOA=10C0-10FF         INFOB=1080-10BF         INFOC=1040-107F         INFOD=1000-103F RAM(0x1100-0x20FF)         镜像(Mirrired):0x1100-0x18FF         拓展(Extended):0x1900-0x20FF         RAM(0x0200-0x09FF)的内存空间拷贝了一份镜像(0x1100-0x18FF)的数据。         镜像和拓展区装载了通过从DATA16_ID复制初始化的数据/定义时有初始化的变量(MAP:DATA16_I)、定义时初始化为0的数据(MAP:DATA16_Z)、栈区数据(MAP:CSTACK) 未知数据(0x2100-0x7FFF)         写满FF 3F code memory(0x8000-0xFFFF)         以bootloader为例,code memory再细分为:常数区0x8000-0x8003(MAP: DATA16_C),启动程序0x8004-0x801B(MAP: CSTART),程序区0x801C-0x87FF(MAP: <CODE> 1 ,硬件中断向量区0xFFC0-0xFFFD(MAP: INTVEC),复位中断向量地址0xFFFE – 0xFFFF(MAP: RESET)         综上,MSP430F247硬件内存空间详细划分如下图:
    18. 关于小白编写bootloader的那档事 23/4233 单片机 2020-09-08
      第二次擦写硬件中断向量区时,为什么单片机会死机?(已解决)     详细描述:更新APP时需要先擦除APP代码区和APP中断向量区,APP中断向量区和硬件中断向量区同在一个512字节大小的段,擦除APP时,硬件中断向量区也被擦除了。所以擦除前先读取硬件中断向量区的内容,擦除后再把先前读取的内容填入硬件中断向量区。下载编译bootloader,第一次更新APP时,可以正常执行读取à擦除à填写的步骤,但第二次更新时,运行到擦除flash时,单片机死机了。代码区和中断向量区都是ff,读取flash的缓存区有硬件中断向量区的正常数据,但PC指针不运行。     原因:擦写flash的程序段有_DINT()和_EINT()语句,硬件中断向量区被擦除后,_EINT()打开全局中断,没有执行目标,造成单片机死机     解决办法:新建一个擦除函数,擦除时关闭全局中断,擦除结束把硬件中断向量区的数据重新填回去,再开启全局中断。
    19. freebsder 发表于 2020-8-26 13:50 把优化级别调高能搞不少空间出来。
      这个试过了,没什么效果
    20. freebsder 发表于 2020-8-26 13:37 不然 IAR 凭啥收费?
      哈哈哈哈是这个原因吗,还想着能不能修改什么配置能改善这种情况

最近访客

< 1/1 >

统计信息

已有3人来访过

  • 芯积分:45
  • 好友:--
  • 主题:5
  • 回复:45

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言