- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
USB3.0设资源_cypress芯片程序解读 2
CYPEESS USB3.0程序解读
解读同步FIFO的一个例子。
生产者,消费者
首先看DMA的回调函数:
typedef void (*CyU3PDmaCallback_t) (
CyU3PDmaChannel *handle, /* Handle to the DMA channel. */
CyU3PDmaCbType_t type, /* The type of callback notification being generated. */
CyU3PDmaCBInput_t *input /* Union that contains data related to the notification.
The input parameter will be a pointer to a CyU3PDmaBuffer_t
variable in the cases where the callback type is CY_U3P_DMA_CB_RECV_CPLT or CY_U3P_DMA_CB_PROD_EVENT. */
);
根据其说明,解读如下:
对每一个DMA通道,回调函数必须被注册。如果没有注册或者相应的通知事件没有被注册,则回调函数不会被执行。
回调函数不能被阻塞。即不能用SLEEP()之类的函数。如果数据需要处理,必须在回调函数之外。
在生产者事件中,应用希望尽可能快地处理输入的数据。如果缓冲的处理不能在规定的时间内完成,则输入的可能是陈旧的数据。在自动信号通道中,输入参量指向最新的数据。如果处理延时,生产者socket可能复盖部分数据。
在手动或手动IN通道模式时,输入参量指向第一个缓冲(用于去消费者socket).如果在第二次调用时,这个缓冲仍没有被处理,输入参量中将是被陈旧的数据。如果数据处理必须在通道中做, CyU3PDmaChannelGetBuffer函数必须被应用,而回调函数必须作为一个通知。
而输入指针input的定义如下:
typedef struct CyU3PDmaBuffer_t
{
uint8_t *buffer; /* Pointer to the buffer */
uint16_t count; /* Byte count of valid data in buffer */
uint16_t size; /* Buffer size */
uint16_t status; /* Buffer status. This is a four bit data field…
} CyU3PDmaBuffer_t;
CyU3PDmaChannel这个结构中包含20个左右的参数,其中含回调函数。
定义了一个全局变量:CyBool_t glIsApplnActive=CyFalse; 这个变量是一个BOOL型先设为FALSE.
程序然后定义了一个错误处理,我们不处理错误,故是一个死循环语句。
然后,定义一个debug_init用串口来显示一些信息。初始化串口,设波特率—只允许发不允许收,另外,采用DMA模式来处理UART。
注意到这个函数:CyU3PDebugInit(CY_U3P_LPP_SOCKET_UART_CONS,8)表示只处理8以下的显示,大于8将不显示。
接下来就是一个回调处理函数
CyFxSlFifoUtoPDmaCallback(
CyU3PDmaChannel *chHandle,
CyU3PDmaCbType_t type,
CyU3PDmaCBInput_t *input)
{
CyU3PReturnStatus_t status =CYU3P_SUCESS;
If(type == CY_U3P_DMA_CB_PROD_EVENT){
Status =
CyU3PDmaChannelCommitBuffer(chHandler,input-buff_p.count,0);
glDMARxCount++;}
}
其中,CommitBuffer这个函数通常在手动DMA方式下被调用,它3个参数的含义分别为:DMA的句柄号,处理的字节数及当前的状态。其中地址由通道描述符隐含着。这个函数发送一个buffer向消费者socket.
接下来,是一个比较复杂的程序
Void CyFxSlFifoApplnStart(void)
这个函数启动一个slave fifo应用。当从USB接口收到一个SET_CONF事件时,即设置配置事件时,它被调
您可能关注的文档
- readdat.jsp.doc莱西少年宫建设实施意见.doc
- Redhat inux9中DNS服务器的配置方式.doc
- Q福建省少先队导员网络培训测试Q卷.doc
- Remarksby President Barack Obama at Town Hall Meeting with Future Chinese Leaders.doc
- Recordst 对象代表一个表的记录集或者命令执行的结果.doc
- RequestResponse程序设计.doc
- RD3296回电阻测试仪(200A).doc
- Rapid Iformation on OLM No.170 130102.doc
- Residenial Property Management System.doc
- RationaRosePowerDesignVisio三大UML建模工具比较及选择方法.doc
- 《GB/T 46383.302-2025电气运输设备 第3-2部分:载物电气运输设备移动性能测试方法》.pdf
- GB/T 46383.302-2025电气运输设备 第3-2部分:载物电气运输设备移动性能测试方法.pdf
- 中国国家标准 GB/T 46383.302-2025电气运输设备 第3-2部分:载物电气运输设备移动性能测试方法.pdf
- 《GB/T 31270.7-2025化学农药环境安全评价试验准则 第7部分:生物富集试验》.pdf
- GB/T 31270.7-2025化学农药环境安全评价试验准则 第7部分:生物富集试验.pdf
- 《GB 5135.2-2025自动喷水灭火系统 第2部分:湿式报警阀、延迟器、水力警铃》.pdf
- GB/T 19412-2025蓄冷(热)空调系统的测试和评价方法.pdf
- 《GB/T 19412-2025蓄冷(热)空调系统的测试和评价方法》.pdf
- 中国国家标准 GB/T 19412-2025蓄冷(热)空调系统的测试和评价方法.pdf
- GB/T 46611-2025电光调制器用铌酸锂单晶薄膜.pdf
原创力文档


文档评论(0)