After playing one season forShepherd University,[3][4][5] Cannon transferred to Virginia State.[6] In the 2015 season, he had 1,183 rushing yards and nine rushingtouchdowns to go along with ninereceptions for 182 receiving yards and two receiving touchdowns. In the 2016 season, he had 1,214 rushing yards and 18 rushing touchdowns to go along with 18 receptions for 203 receiving yards and two receiving touchdowns. In his last year at Virginia State in 2017, he had 1,638 rushing yards and 17 rushing touchdowns to go along with 21 receptions for 225 receiving yards and three receiving touchdowns.[7]
Cannon was selected by theNew York Jets in the sixth round (204th overall) of the2018 NFL draft.[9] He became the first player from Virginia State to be drafted sinceKelvin Kinney in1996.[10] He made his NFL debut in the Jets' season-opener against theDetroit Lions. In the 48–17 victory, he had sixcarries for 15 yards and a six-yard reception.[11] He scored his first professional touchdown in Week 14 against theBuffalo Bills.[12] In his rookie season, he finished with 113 rushing yards and one rushing touchdown to go along with 17 receptions for 144 receiving yards.[13]
Cannon was placed oninjured reserve on November 1, 2019.[14] He was waived on August 3, 2020.[15]
On September 15, 2021, Cannon was claimed off waivers by theSan Francisco 49ers.[20] He suffered a concussion in Week 13 and was placed on injured reserve on December 11.[21] He was activated on January 29, 2022.[22]
On March 18, 2022, Cannon signed with theTennessee Titans.[23] He was released on August 30, 2022, and signed to thepractice squad the next day.[24][25] He was promoted to the active roster on September 12, 2022.[26] He suffered a knee injury in Week 2 and was placed on injured reserve on September 21.[27]