1. usb和can公用512b的ram,但是ram地址为0x40006000-0x40006400,分明为1kb啊,为什么还是说512b.
2. 若pc机读ram中数据时,我同时对ram进行写操作,怎么办,我感觉库中并没有对这种操作进行处理啊。
3. 对于缓冲区,不理解为什么给了个地址,又同时给了个usb本地地址,并且我认为,地址偏移应该为[usb_btable]*2+n*16+(0,4,8,12),也就是缓冲区描述表也应该扩大2倍,不知道是不是
4.不理解为什么usb_btable设置成13+3位的,反正一共就512b(我理解为1k),8位就够了
1)这个缓冲区是个双端口ram,cpu一端是以32位宽访问,而usb一端是以16位宽访问,因此从cpu端看浪费了一半的地址空间,即从cpu端读出32位数据时只有16位是有效的;所以1kb的地址空间,实际只有512字节的存储空间。
2)因为这个缓冲区是个双端口ram,所以你不用担心访问冲突的问题,硬件会协调它们之间的操作。
3)因为这个缓冲区是个双端口ram,所以有2个地址空间,一个是从cpu端看,另一个是从usb收发器那一端看。
4)不明白你说的usb_btable设置成13+3位是什么意思。
----------------------------------------------------
1.您说的usb收发器应该指的的是stm芯片内核中的独立模块,这个我没有理解错吧,还有usb端写ram应该是按字对其的是吧,比方说写的地址为0x00,0x01,然后0x02,0x03不写,再写0x04和0x05,我没有理解错吧
2.即使是ram同一时刻也只能又一个控制器对指定地址进行操作啊,而开始时,usb控制器以及经addr和count读取到内部控制内核中了,cpu再一次操作后不就会改变addr和count,而usb控制器的addr和count也没有改变,怎么回事,我有点转不过来
3.我的意思是没必要把usb_btable设置成那么多位,因为就没有那么大的地址空间,可以寻址,比如说设置成0xfff8,这个已经超出缓冲区范围了
1)可以这么理解。但更准确地说是,usb收发器写ram时,如果从cpu端看,写的地址为0x00、0x01,然后0x02、0x03不写,再写0x04、0x05;但是usb收发器写ram时,如果从usb端看,写的地址就是连续的,即0x00、0x01、0x02、0x03........。
2)你还没有明白双端口ram的构造,它有2个地址总线和2个操作计数器,cpu端和usb收发器端各有一个地址总线和一个操作计数器。
3)不错,没必要把usb_btable设置成那么多位,即使这样与你的操作有什么关系吗?不管怎样你都不能设置超出缓冲区范围的参数。
----------------------------
stm32f103没有集成usb host controller,stm32f105或stm32f107集成了usb host controller。
苹果智能手表血氧检测功能因专利争议在美暂停,其他地区仍可用
Intel:补丁也有缺陷,英特尔正在悄悄建议一些客户不要着急安装补丁
BAT在小程序的赛道上展开了激战
SiC IGBT的发展现状及未来趋势分析
东芝电视机维修资料
tm32f103系列USB问题
数字化建设美好工业 企业共同探索数字化转型之路
Maxim微型PLC平台让工业4.0尽在您掌握
开关电源的工作原理及硬件电路设计流程和步骤
PAL电磁兼容实验室顺利通过谐波电流发射测试能力验证
ikbc推出C200/210青春多彩系列机械键盘,售价398元起
十个关键揭示未来15年新能源汽车产业发展路径
OPPO沈义人称Reno3 Pro的屏幕在整个行业里屈指可数
简要概述射频连接器及其分类和指标
新一代Arm Cortex-M0+智能卡读卡器单片机
网关是什么? 网关怎么设置
华为荣耀8青春版直接对标千元机颜值是最大卖点!魅族可要小心了
中科驭数亮相openEuler Summit 2022 探讨DPU在云原生网络的场景应用
够硬派!够大气!哈弗H9国五钜惠开启夏日越野模式
学挖掘机不用再去蓝翔:VR起重机模拟器来了