@@ -1835,13 +1835,13 @@ HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep)
1835
1835
*/
1836
1836
HAL_StatusTypeDef USB_EPStartXfer (USB_TypeDef * USBx , USB_EPTypeDef * ep )
1837
1837
{
1838
- uint16_t pmabuffer = 0 ;
1839
- uint32_t len = ep -> xfer_len ;
1838
+ uint16_t pmabuffer ;
1839
+ uint32_t len ;
1840
1840
1841
1841
/* IN endpoint */
1842
1842
if (ep -> is_in == 1 )
1843
1843
{
1844
- /*Multi packet transfer*/
1844
+ /* Multi packet transfer */
1845
1845
if (ep -> xfer_len > ep -> maxpacket )
1846
1846
{
1847
1847
len = ep -> maxpacket ;
@@ -1856,8 +1856,8 @@ HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx , USB_EPTypeDef *ep)
1856
1856
/* configure and validate Tx endpoint */
1857
1857
if (ep -> doublebuffer == 0 )
1858
1858
{
1859
- USB_WritePMA (USBx , ep -> xfer_buff , ep -> pmaadress , len );
1860
1859
PCD_SET_EP_TX_CNT (USBx , ep -> num , len );
1860
+ pmabuffer = ep -> pmaadress ;
1861
1861
}
1862
1862
else
1863
1863
{
@@ -1874,11 +1874,18 @@ HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx , USB_EPTypeDef *ep)
1874
1874
PCD_SET_EP_DBUF0_CNT (USBx , ep -> num , ep -> is_in , len );
1875
1875
pmabuffer = ep -> pmaaddr0 ;
1876
1876
}
1877
- USB_WritePMA (USBx , ep -> xfer_buff , pmabuffer , len );
1877
+ }
1878
+
1879
+ USB_WritePMA (USBx , ep -> xfer_buff , pmabuffer , (uint16_t ) len );
1880
+
1881
+ if (ep -> doublebuffer == 0 )
1882
+ {
1883
+ PCD_SET_EP_TX_STATUS (USBx , ep -> num , USB_EP_TX_VALID );
1884
+ }
1885
+ else
1886
+ {
1878
1887
PCD_FreeUserBuffer (USBx , ep -> num , ep -> is_in );
1879
1888
}
1880
-
1881
- PCD_SET_EP_TX_STATUS (USBx , ep -> num , USB_EP_TX_VALID );
1882
1889
}
1883
1890
else /* OUT endpoint */
1884
1891
{
0 commit comments